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

标签 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

它使用动态脚本的概念。我们在应用程序中做了同样的事情,那么现在一切似乎都正常了。还有待全面分析。

最佳答案

这是因为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;

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

for more information please refer this link

关于ajax - $.ajax 调用在 IE8 中工作正常,但在 Firefox 和 Chrome 浏览器中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8698682/

相关文章:

javascript - JQuery AjaxComplete 方法剥离自定义 header ?

ajax - 有人知道 livelook.com 概念背后的技术方法吗?

javascript - 如何将值从 Ajax 传递到另一个函数

javascript - Stripe checkout - 如何绑定(bind)提交事件?

javascript - 在揭示模块模式中返回 jQuery Promise

javascript - 访问通过 xhr 请求获取的 HTML 源中所有脚本标签中的变量

javascript - 单击表单中的链接,将文本区域传递给 php 文件进行处理后更新文本区域

javascript - 检查用户是否向下滚动 iframe 到末尾

javascript - 如何消耗 xhr.responseText 的字节?

javascript - 打破封闭