簡體   English   中英

jquery AJAX停止使用iOS 5.0.1

[英]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請求。 這似乎是一個相關的問題:

http://spin.atomicobject.com/2012/01/20/mobile-safari-on-ios-5-1-unexpectedly-making-cross-origin-resource-sharing-requests/

我在問題中提供的鏈接實際上是指向解決方案。 我的一些ajax請求用於獲取使用流式傳輸的PDF的URL

Content-Disposition: attachment; filename="somename.pdf"

顯然,這會導致iOS 5.0的Safari出現重大問題,打破XMLHttpRequest對象(它與jquery無關)。 瘋。 這是鏈接:

http://spin.atomicobject.com/2012/01/20/mobile-safari-on-ios-5-1-unexpectedly-making-cross-origin-resource-sharing-requests/

謝謝你的調查。 我有同樣的問題。 收到文件作為“附件”后,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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM