2013-07-09 71 views
1

如何更正重写Ajax请求以使其在IE 8 +中使用XDomainRequest?AJAX跨域请求IE 8+

$.ajax({ 
    type: "GET", 
    url: url, 
    success: function(xml) { 
     $('.post-msg').append(processXml(xml, config)); 
    }, 
    error: function(jqXhr, textStatus, errorThrown) { 
     var errorMsg = "Request on url: " + url + " failed: " + textStatus + " error:" + errorThrown; 
     alert(errorMsg); 
    } 
}); 
+0

[跨域Ajax请求(http://stackoverflow.com/questions/15477527/cross-domain-ajax-request) –

+0

网站是否支持JSONP的可能重复?我知道jQuery不支持IE 8和9的cors,因为这些浏览器的xmlhttprequest不支持它,因为IE 8(以及我认为IE 9)与CORS jQuery团队的特殊对象一起出现的所有怪癖都有决定不创建其他对象。因此,如果网站有JSONP,那么使用它,如果它有CORS,然后编写自己的xhr请求,但仍然是在IE 8或9中的bug。 – HMR

+1

[在IE8/9中使用jQuery和XDomainRequest的CORS](http://stackoverflow.com/questions/11487216/cors-with-jquery-and-xdomainrequest-in-ie8-9)有一些非常有用的背景和库链接。 – apsillers

回答

5
+0

jQuery不支持IE 8和9中的CORS(他们可以创建xDomainRequest而不是XMLHttpRequest)的原因是因为在IE 8和9中对cors的支持非常差和不可预测。我目前在jQuery的bug列表中找不到确切的链接,但是有一些很好的理由让你在支持IE 8和9时不考虑CORS。 – HMR

+1

@HMR你可能指的是http:/ /bugs.jquery.com/ticket/8283,它被封为“'enhancement:plugin'”,我认为这意味着“我们不会支持这个混乱;如果您必须使用插件”。 – apsillers

+0

@apsillers感谢您查找链接。我认为他们提到了这里提到的限制:http://blogs.msdn.com/b/ieinternals/archive/2010/05/13/xdomainrequest-restrictions-limitations-and-workarounds.aspx注意到许多xhr请求尝试CORS时会失败,但期望它不会失败。如果你可以忍受这些限制和其他意想不到的结果,那么CORS将是一个选择,但是需要警告许多其他程序员不成功,并且不得不求助于JSONP。 – HMR