2009-09-30 135 views
5

我们正在开发iPhone Web应用程序,该应用程序使用大量的jQuery AJAX调用从XML Web服务提取数据。在Safari上对我的Mac进行开发和测试时,通话效果非常好。问题是,只要我们在iPhone模拟器或实际设备上测试,我们就没有从Web服务获取任何回报。JQuery Ajax请求无法在iPhone设备浏览器上工作

我已经转向了“开发”菜单上,改变了“用户代理”,以移动Safari浏览器,看看是否有差别,但它仍然适用于物联网的PC端。

我不认为这是一个跨站点的限制,因为所有的Ajax调用等来自同一服务器和端口号制成。

有没有办法我们可以做仿真器JavaScript调试,看看那里的调用失败?

谢谢,德万·奈尔

回答

4

您可以启用在移动Safari浏览器的JavaScript控制台。请参阅说明here。它基本上是Settings-> Safari-> Developer-> Debug Console。这适用于仿真器和实际设备。

+0

链接断开:( – Pathros 2015-09-29 18:18:40

5

我遇到了同样的问题。

查询的网址:在你发送给jQuery.ajax函数的对象参数。将它从“http://the/full/url”缩短为“/ just/the/relative/to/root/part”

对我来说,它好像是一个Safari Mobile bug。

+0

谢谢你的提示 - 我们实际上是从不同的服务器/域不是站点拉动XML流托管的JavaScript我假定这是一个XSS安全措施,在iPhone不允许来自第三方服务器的XMLHttpRequest? – Devan 2009-12-29 00:03:20

+0

这也适用于我 – Rob3C 2010-08-03 23:38:52

+0

这个答案解决了我的问题,多年后在iPhone 7上运行Safari。 – iep 2017-12-22 09:33:33

0

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

如果我们做我们的代码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只是返回“一无所有”

0

对我来说是脚本标签移动到头部标记答案。

0

我有同样的问题写一个网站的AJAX聊天。问题是缓存。添加这行代码并解决问题。

$.ajaxSetup({ cache: false }); 
相关问题