2013-07-09 276 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