我们正在使用广泛的jquery AJAX调用开发iPhone Web应用程序,以从XML Web服务中提取数据。在Safari上开发和测试我的Mac时,这些通话工作得很漂亮。问题是,只要我们在iPhone模拟器或实际设备上进行测试,我们就无法从网络服务中获得任何回报。
我打开了“开发”菜单并将“用户代理”更改为Mobile Safari以查看是否有所作为,但它仍适用于PC端。
我认为这不是跨站点限制,因为所有ajax调用等都来自相同的服务器和端口号。
有没有办法可以在模拟器上进行javascript调试,看看调用失败的地方?
谢谢, 德万
答案 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)
我的答案是将脚本标记移动到头标记中。