这是我的代码
$.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
它使用动态脚本的概念。我们在应用程序中做了同样的事情,那么现在一切似乎都正常了。还有待全面分析。
最佳答案
这是因为Same origin policy 。不能使用ajax调用外部站点。如果你真的想使用,你必须使用 JSONP 。或者您可以使用服务器端代理来实现此目的。意思是,在服务器端调用外部站点并对该 Web 服务进行 ajax 调用。
<小时/>更新:
在您的站点中创建 webserviceice,并在 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;
然后使用您的代码访问本地服务。
关于ajax - $.ajax 调用在 IE8 中工作正常,但在 Firefox 和 Chrome 浏览器中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8698682/