Jquery异步调用阻止页面重新加载

时间:2013-04-28 21:44:46

标签: ajax jquery

我有一个每5秒执行一次备份的功能。有时,无法访问备份的目标服务器,并且请求将停止,直到达到超时。 由于这会影响用户界面,因此我将此“备份函数”作为异步ajax请求执行。

setInterval("doSync()", 5000 );

function doSync() {    
     $.ajax({
         url: "backup.php",
         async : true
     });
 };

这在后台非常好。 但是只要重新加载页面,就会完成已经等待的备份函数调用。因此,在最坏的情况下,如果我有30秒超时的备份,则用户必须在加载新页面之前等待30秒。 这对用户来说是不可接受的。

我可以采用哪种策略来避免这种情况? 可以终止备份请求......

2 个答案:

答案 0 :(得分:0)

我认为这个问题对浏览器来说非常具体。 实际上,它们中的大多数都限制了对同一主机的并行请求数,这就是它在重新加载页面之前“等待”的原因。

如果您通过AJAX请求调用与您尝试重新加载的URL完全相同的URL,Firefox将不会同时运行多个请求。一个简单的解决方法是将随机查询字符串附加到URL。

另一种选择是使用javascript beforeunload事件取消您的AJAX请求:Abort Ajax requests using jQuery

答案 1 :(得分:0)

我可能会考虑在你的情况下设置超时。 我也发现类似的问题已经解决了:click