Dinesh
Dinesh

Reputation: 2066

$.ajax call working fine in IE8 and Doesn't work in firefox and chrome browsers

here is my code

$.ajax(
{
    type: "GET", 
    url: 'http://devserver:7995/stdpart/services/GetAllPartsWithFilter',
    dataType: 'json',
    data: jsonPartsData,
    success: fnGetPartsData, 
    error: PartsLoadError  
});

This is code working fine in IE8, But getting failed in Firefox and Chrome browsers. When i, inspect the XHR object, it's saying the status code code is 0. I have checked all other questions, none of them are helped me to identify the issue.

Let me know, if i am doing any thing wrong in this code. If $.ajax has some compatibility issues, then please suggest something equivalent to it.

Update: We found one solution at http://www.xml.com/pub/a/2005/12/21/json-dynamic-script-tag.html

It is using the concept of Dynamic Scripting. We have done the same thing in our application, then every thing seems to be working now. Yet to analyze fully.

Upvotes: 4

Views: 11794

Answers (3)

nachtigall
nachtigall

Reputation: 2497

Another solution would be to use the jQuery ajaxTransport extension that uses XDomainRequest for IE8+.

Upvotes: 3

Chamika Sandamal
Chamika Sandamal

Reputation: 24292

this is because of the Same origin policy. you cannot use ajax to call external sites. if you really want to use, you have to use JSONP. Or you can use serverside proxy for this. means, call external site in the server side and do ajax call to the that webservice.


UPDATE:

create webserveice in your site and in the webmethod put following code

string proxyURL = "http://devserver:7995/stdpart/services/GetAllPartsWithFilter";
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(proxyURL);
request.Method = "GET";
HttpWebResponse response = (HttpWebResponse)request.GetResponse();

if (response.StatusCode.ToString().ToLower() == "ok")
{
    Stream content = response.GetResponseStream();
    StreamReader contentReader = new StreamReader(content);         
    return contentReader.ReadToEnd();
}
return string.Empty;

then access local service using your code.

for more information please refer this link

Upvotes: 6

hrishikeshp19
hrishikeshp19

Reputation: 9028

I do think there is anything wrong with your code.

Please see Pure JavaScript Ajax calls

Different libraries implement Ajax APIs in different manner. So, in your case it must be a problem with the version of jquery you are using.

Please try Pure JavaScript Ajax call, and see if it works on all browsers. If it does, then there is a problem with jquery which you do not want to spend time on. If it does not then you are missing something.

Upvotes: 0

Related Questions