我正在尝试使用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,但不适用于任何其他浏览器。
提前致谢!
答案 0 :(得分:0)
我知道跨域阻止,但让我失望的是,这适用于Chrome,但不适用于任何其他浏览器。
这听起来像是您从支持CORS请求数据的服务器,但请记住,不同的浏览器可能会发送不同的标头以及请求,如果浏览器发送标头,则CORS请求将失败服务器不说没关系。因此,完全有可能Chrome只发送服务器已批准的标头,因此请求有效,但Firefox正在发送服务器不批准的标头,因此请求无效。
除非您使用IE10,否则IE可能无法正常工作,因为跨域请求在IE中不起作用,除非您使用XDomainRequest
对象而不是XMLHttpRequest
对象,并且jQuery没有那样做。有一些补丁可以做到这一点,但jQuery库本身没有。 IE10 最后通过标准XMLHttpRequest
对象启用CORS。