jquery AJAX停止使用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,上面输入错误function警报rejected而没有任何实际的HTTP请求。 在我需要重新启动iPhone之前,似乎只有一个AJAX请求可以正常工作。 这是一个已知的jquery / iOS 5.0问题吗? 我该怎么调试呢? 有没有解决方法? 我不知道从哪里开始寻找。

注意 :我在服务器端注意到,不是GET请求,而是发出OPTIONS请求。 这似乎是一个相关的问题:

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