$ .ajax调用在IE8中正常工作,并且在firefox和chrome浏览器中不起作用

这是我的代码

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

这是代码在IE8中正常工作,但在Firefox和Chrome浏览器中失败。 当我检查XHR对象时,说状态码是0。我已经检查了所有其他问题,没有一个能够帮助我确定问题。

让我知道,如果我在这个代码做任何错误的事情。 如果$ .ajax有一些兼容性问题,那么请build议一些相当于它的东西。

更新:我们在http://www.xml.com/pub/a/2005/12/21/json-dynamic-script-tag.htmlfind了一个解决scheme

它使用dynamic脚本的概念。 我们在我们的应用程序中做了同样的事情,那么现在似乎每件事情都在起作用。 还没有完全分析。

这是因为相同的起源政策 。 你不能使用ajax来调用外部网站。 如果你真的想使用,你必须使用JSONP 。 或者你可以使用这个服务器端代理。 是指在服务器端调用外部站点,并对该web服务执行ajax调用。


更新:

在您的网站和webmethod中创buildwebserveice放下面的代码

 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; 

然后使用您的代码访问本地服务。

欲了解更多信息,请参阅此链接

另一个解决scheme是使用jQuery ajaxTransport扩展 ,它使用IE8 +的XDomainRequest。

我认为你的代码有什么问题。

请参阅纯JavaScript JavaScript Ajax调用

不同的库以不同的方式实现Ajax API。 所以,在你的情况下,它必须是您使用的jQuery版本的问题。

请尝试纯JavaScript Ajax调用,看看它是否适用于所有浏览器。 如果是这样,那么你不想花时间在jQuery中存在问题。 如果没有,那么你错过了一些东西。