$ .ajax调用在IE8中工作正常,在Firefox和Chrome浏览器中不起作用

时间:2012-01-02 08:10:23

标签: ajax jquery xmlhttprequest

这是我的代码

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

这是在IE8中运行良好的代码,但在Firefox和Chrome浏览器中失败了。当我检查XHR对象时,它说状态代码为0.我检查了所有其他问题,没有一个能帮我识别问题。

让我知道,如果我在这段代码中做错了什么。如果$ .ajax有一些兼容性问题,那么请建议一些与之相当的东西。

更新 我们找到了一个解决方案 http://www.xml.com/pub/a/2005/12/21/json-dynamic-script-tag.html

它使用动态脚本的概念。我们在我们的应用程序中做了同样的事情,然后现在每件事似乎都在工作。然而要充分分析。

3 个答案:

答案 0 :(得分:6)

这是因为Same origin policy。你不能使用ajax来调用外部网站。如果你真的想使用,你必须使用JSONP。或者您可以使用服务器端代理。意味着,在服务器端调用外部站点并对该Web服务进行ajax调用。


<强> 更新:

在您的网站中创建webserveice,并在webmethod中创建以下代码

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;

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

for more information please refer this link

答案 1 :(得分:3)

另一个解决方案是使用XDomainRequest用于IE8 +的jQuery ajaxTransport extension

答案 2 :(得分:0)

我认为您的代码有任何问题。

请参阅Pure JavaScript Ajax calls

不同的库以不同的方式实现Ajax API。因此,在您的情况下,您使用的jquery版本必定存在问题。

请尝试Pure JavaScript Ajax调用,看看它是否适用于所有浏览器。如果确实如此,那么jquery就有问题,你不想花时间。如果没有,那么你就错过了什么。