小编典典

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

ajax

这是我的代码

$.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找到了一种解决方案

它使用了 动态脚本 的概念。我们在应用程序中做了同样的事情,那么现在似乎所有事情都在起作用。尚未充分分析。


阅读 304

收藏
2020-07-26

共1个答案

小编典典

这是因为有相同来源政策。您不能使用ajax调用外部站点。如果确实要使用,则必须使用JSONP。或者,您可以使用服务器端代理。意味着,请在服务器端调用外部站点,然后对该Web服务进行Ajax调用。


更新:

在您的网站和webmethod中创建webserveice,然后输入以下代码

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;

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

有关更多信息,请参考此链接

2020-07-26