0

我正在尝试使用 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 中有效,但在任何其他浏览器中都无效。

提前致谢!

4

1 回答 1

0

我知道跨域阻止,但让我失望的是这在 chrome 中有效,但在任何其他浏览器中都无效。

听起来您要从中请求数据的服务器支持CORS,但请记住,不同的浏览器可能会随请求发送不同的标头,如果浏览器发送的标头服务器未表示可以,则 CORS 请求将失败. 因此,完全有可能 Chrome 只发送服务器已批准的标头,因此请求有效,但 Firefox 发送的标头服务器未批准,因此请求不起作用。

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

于 2013-02-15T15:30:35.817 回答