[英]jquery AJAX stopped working with iOS 5.0.1
以下邏輯用於在我們支持的所有移動設備上使用jquery 1.4.4和1.7.1:
$.ajax({
url: 'http://www.example.com/someurl',
type: 'GET',
dataType: 'text',
timeout: 60000,
success: function(data) {
alert(data);
},
error: function(jqXHR) {
alert(jqXHR.state());
}
});
但是對於iOS 5.0.1,上面輸入錯誤函數警報rejected
而沒有任何實際的HTTP請求。 在我需要重新啟動iPhone之前,似乎只有一個AJAX請求可以正常工作。 這是一個已知的jquery / iOS 5.0問題嗎? 我該怎么調試呢? 有沒有解決方法? 我不知道從哪里開始尋找。
注意 :我在服務器端注意到,不是GET
請求,而是發出OPTIONS
請求。 這似乎是一個相關的問題:
我在問題中提供的鏈接實際上是指向解決方案。 我的一些ajax請求用於獲取使用流式傳輸的PDF的URL
Content-Disposition: attachment; filename="somename.pdf"
顯然,這會導致iOS 5.0的Safari出現重大問題,打破XMLHttpRequest
對象(它與jquery無關)。 瘋。 這是鏈接:
謝謝你的調查。 我有同樣的問題。 收到文件作為“附件”后,Mobile Safari會在調用時發送OPTIONS請求:
$.ajax('/url')
但是,如果我從同一個文件運行以下代碼,它會生成一個有效的GET請求:
http = new XMLHttpRequest()
http.open("GET", "/url")
http.send()
為什么jQuery不起作用但XMLHttpRequest在這里工作?
錯誤的原因是相同的原始策略。 它只允許您對自己的域執行XMLHTTPRequests。 看看你是否可以使用JSON。
參考資料和推薦資源;
https://stackoverflow.com/a/1109261/896341
http://api.jquery.com/jQuery.getJSON/
http://www.w3.org/Security/wiki/Same_Origin_Policy
https://developer.mozilla.org/En/Same_origin_policy_for_JavaScript
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.