jQuery ajax调用不在IE中工作

时间:2013-02-15 15:26:33

标签: jquery cross-domain

我正在尝试使用jquery的ajax函数从远程服务器获取一些json。

var self = $(this);
$.ajax({
    cache: false,
    url: *external url*,
    data: {param: self.val()},
    type: 'GET',
    dataType: 'application/json',
    crossDomain: true,
    success: function(data, status) {
        console.log(status);
        console.log(data);
    }
});

这在Chrome中工作正常,数据会输出。在firefox中,发送请求,但没有数据写入控制台。在IE中,似乎根本没有发送呼叫。

我做错了什么?我知道跨域阻止,但让我失望的是,这适用于chrome,但不适用于任何其他浏览器。

提前致谢!

1 个答案:

答案 0 :(得分:0)

  

我知道跨域阻止,但让我失望的是,这适用于Chrome,但不适用于任何其他浏览器。

这听起来像是您从支持CORS请求数据的服务器,但请记住,不同的浏览器可能会发送不同的标头以及请求,如果浏览器发送标头,则CORS请求将失败服务器不说没关系。因此,完全有可能Chrome只发送服务器已批准的标头,因此请求有效,但Firefox正在发送服务器不批准的标头,因此请求无效。

除非您使用IE10,否则IE可能无法正常工作,因为跨域请求在IE中不起作用,除非您使用XDomainRequest对象而不是XMLHttpRequest对象,并且jQuery没有那样做。有一些补丁可以做到这一点,但jQuery库本身没有。 IE10 最后通过标准XMLHttpRequest对象启用CORS。