JQuery Ajax请求无法在iPhone设备浏览器上运行

我们正在使用广泛的jquery AJAX调用开发iPhone Web应用程序,以从XML Web服务中提取数据。 在Safari上开发和测试我的Mac时,这些通话工作得很漂亮。 问题是,只要我们在iPhone模拟器或实际设备上进行测试,我们就无法从Web服务中获得任何回报。

我打开了“开发”菜单并将“用户代理”更改为Mobile Safari以查看是否有所作为,但它仍可在PC端工作。

我不认为这是一个跨站点限制,因为所有ajax调用等都是由相同的服务器和端口号组成的。

有没有办法我们可以在模拟器上进行javascript调试,看看调用失败的地方?

谢谢,德万

我遇到了同样的问题。

检查发送到jQuery.ajax函数的对象中的url:参数。 将它从“ http:// / full / url ”缩短为“/ just / the / relative / to / root / part”

对我来说,它似乎是一个Safari Mobile的bug。

您可以在Mobile Safari中启用javascript控制台。 请参阅此处的说明。 它基本上是Settings-> Safari-> Developer-> Debug Console。 这适用于模拟器和实际设备。

我在为网站编写AJAX聊天时遇到了同样的问题。 问题是缓存。 添加这行代码,问题就解决了。

$.ajaxSetup({ cache: false }); 

好吧,我想我们已经解决了这个问题,尽管它仍让我感到困惑。

如果我们在代码中的onReady()部分之后直接执行“虚拟”XMLHttpRequest,那么它似乎“解锁”任何后续请求。

 http = new XMLHttpRequest(); http.open("GET", "/getdata/dummy.xml); http.onreadystatechange=function() { if(http.readyState == 4) { // alert(http.responseText); } } http.send(null); 

如果我注释掉这个代码块,那么完全有效的XML请求就会失败。 再次,这只是在设备上,因为Safari和模拟器将在没有此代码块的情况下工作。

PS:dummy.xml只返回“没有”

我的答案是将脚本标记移动到head标记中。