首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >IE9不执行Ajax请求。

IE9不执行Ajax请求。
EN

Stack Overflow用户
提问于 2014-02-24 19:01:27
回答 1查看 9.2K关注 0票数 1

似乎是一个相当常见的问题,但在搜索了一堆这样的帖子,我仍然没有更近,所以我们开始。

IE9拒绝执行我的ajax调用,它直接跳过错误函数。没有从浏览器发送任何请求,控制台中也没有出现错误,这使得问题更难调试。

我猜这个问题对于IE9来说是非常特殊的,因为它在Chrome、FF甚至IE8中都能使用。POST请求是跨域的,但幸运的是,如果有人认为会有帮助,我可以修改任何我想要的标题。

请注意,我对console.log()使用了polyfill,尽管据我所知,这只会影响< IE8。

我试过什么

  • 添加缓存:false
  • 加法时间戳
  • 添加contentType
  • 把我的电脑锯成两半

代码语言:javascript
复制
$.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();
    }

});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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或服务器端代理。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21996554

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档