iOS6 Safari JavaScript Ajax轮询错误?

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中看到的行为是,当前一个调

我有一个web应用程序,设计用于在台式机和移动设备(如iPhone)上运行。它在iOS设备上一直运行良好,直到最近我们将其中一台设备升级到iOS6。现在我们看到一个奇怪的bug,它似乎只针对iOS6上的Safari。它在iOS5 Safari上仍然可以正常工作,在iOS6 Chrome上也可以正常工作

这个bug似乎与我们查询服务器更新的方式有关。我们已经设置了每5秒进行一次Ajax调用。Ajax调用返回新数据,客户端使用新数据进行更新。我们现在在Safari/iOS6中看到的行为是,当前一个调用返回时,调用立即发生,结果是一个页面不断刷新和重新绘制,使其无法使用。这个小微调器也一直在运行,使页面看起来好像从未停止加载

下面是设置它的客户端JavaScript代码:

$(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上遇到了一个经常旋转的问题,我想知道这个答案是否在你的移动应用程序上解决了这个问题?