iOS6 Safari JavaScript Ajax轮询错误?
我有一个web应用程序,设计用于在台式机和移动设备(如iPhone)上运行。它在iOS设备上一直运行良好,直到最近我们将其中一台设备升级到iOS6。现在我们看到一个奇怪的bug,它似乎只针对iOS6上的Safari。它在iOS5 Safari上仍然可以正常工作,在iOS6 Chrome上也可以正常工作 这个bug似乎与我们查询服务器更新的方式有关。我们已经设置了每5秒进行一次Ajax调用。Ajax调用返回新数据,客户端使用新数据进行更新。我们现在在Safari/iOS6中看到的行为是,当前一个调用返回时,调用立即发生,结果是一个页面不断刷新和重新绘制,使其无法使用。这个小微调器也一直在运行,使页面看起来好像从未停止加载 下面是设置它的客户端JavaScript代码:iOS6 Safari JavaScript Ajax轮询错误?,javascript,jquery,safari,ios6,mobile-safari,Javascript,Jquery,Safari,Ios6,Mobile Safari,我有一个web应用程序,设计用于在台式机和移动设备(如iPhone)上运行。它在iOS设备上一直运行良好,直到最近我们将其中一台设备升级到iOS6。现在我们看到一个奇怪的bug,它似乎只针对iOS6上的Safari。它在iOS5 Safari上仍然可以正常工作,在iOS6 Chrome上也可以正常工作 这个bug似乎与我们查询服务器更新的方式有关。我们已经设置了每5秒进行一次Ajax调用。Ajax调用返回新数据,客户端使用新数据进行更新。我们现在在Safari/iOS6中看到的行为是,当前一个调
$(document).ready(function(){
getUpdates();
var refresh = 5000;
setInterval("getUpdates()", refresh);
});
function getUpdates() {
$.post("status.jsp", {}, function(status){
// do client-side rendering here
}, "json");
}
这是Safari中的一个bug吗?我的代码中有一个bug?有解决办法吗?我的网络应用现在在iPhone上没用了,这不是一个好情况。
谢谢 My two cents您不应该使用setInterval,而应该使用setTimeout递归调用getUpdates。这样,如果服务器需要很长时间响应或者用户界面忙于处理,您的请求总是相隔5秒,而不是让它们堆叠在一起
$(document).ready(function(){
getUpdates();
});
function getUpdates() {
$.post("status.jsp", {}, function(status){
// do client-side rendering here
setTimeout(getUpdates, 5000);
}, "json");
}
ios6safari缓存ajax结果。查看此供参考,您可以更改
setInterval(“getUpdates()”,刷新)代码>到设置间隔(获取更新,刷新)
防止eval
被使用。NuclearHost,修复了它,你能把它放在一个答案中,我可以接受它并提供一些评论吗?这有帮助吗?我在ios6及更高版本的safari上遇到了一个经常旋转的问题,我想知道这个答案是否在你的移动应用程序上解决了这个问题?