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

时间:2009-09-30 07:18:33

标签: jquery iphone ajax

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

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

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

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

谢谢, 德万

5 个答案:

答案 0 :(得分:6)

我遇到了同样的问题。

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

对我而言,它似乎是Safari Mobile的错误。

答案 1 :(得分:4)

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

答案 2 :(得分:1)

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

$.ajaxSetup({ cache: false });

答案 3 :(得分:0)

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

如果我们在代码中的onReady()部分之后直接执行'dummy'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只返回“nothing”

答案 4 :(得分:0)

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