似乎是一个相当常见的问题,但在搜索了一堆这样的帖子,我仍然没有更近,所以我们开始。
IE9拒绝执行我的ajax调用,它直接跳过错误函数。没有从浏览器发送任何请求,控制台中也没有出现错误,这使得问题更难调试。
我猜这个问题对于IE9来说是非常特殊的,因为它在Chrome、FF甚至IE8中都能使用。POST请求是跨域的,但幸运的是,如果有人认为会有帮助,我可以修改任何我想要的标题。
请注意,我对console.log()使用了polyfill,尽管据我所知,这只会影响< IE8。
我试过什么
码
$.ajax({
type: 'POST',
url:
'http://mydomain.com/api/path/' + someVar +
'/additional/parameter/paths' +
'?ts=' + new Date().getTime(),
data: data,
cache: false,
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function () {
$('#contact-form-success').foundation('reveal', 'open');
},
error: function (xhr, status) {
console.log('The request failed (XHR / Status)');
console.log(xhr);
console.log(status);
$('#contact-form-error').foundation('reveal', 'open');
},
complete: function () {
stopAnimateButton();
}
});发布于 2014-02-24 19:24:28
IE8和9需要使用XDomainRequest对象来使用CORS执行跨域请求。IE7根本不支持CORS。
由于各种不一致,jQuery没有实现XDomainRequest。
要解决这个问题,您基本上需要重写跨域请求的处理方式,要么不使用jQuery,要么向jQuery添加一个传输,该传输拦截所有跨域请求,并在可用时使用XDomainRequest来处理这些请求,而xhr2则不然。
这个问题展示了如何不使用$.ajax来完成它
Why does this cross-domain request work in other browsers but not IE9?
这里有一个github回购,它展示了如何添加传输。https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest
如果需要IE7支持,则必须使用JSONP或服务器端代理。
https://stackoverflow.com/questions/21996554
复制相似问题