2013-04-28 54 views
0

我有一个功能,每5秒执行一次备份。有时备份的目标服务器不可访问,请求停止,直到达到超时。 因为这会影响用户界面,所以我执行这个'备份功能'作为异步ajax请求。jquery异步调用块页面刷新

setInterval("doSync()", 5000); 

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

这在后台运行相当不错。 但是一旦页面重新载入被执行,已经等待的备份函数调用将完成。因此,在最糟糕的情况下,如果我有30秒超时的备份,用户必须等待这30秒才能加载新页面。 这是用户不能接受的。

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

回答

0

我认为这个问题是相当具体的浏览器。 事实上,它们中的大多数限制了对同一主机的并行请求数量,这就是为什么它在重新加载页面之前“等待”。

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

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

+0

这些URL是不同的,但无论如何,我从这个答案中得知,我不应该用带有AJAX调用的浏览器加载一些应该由独立作业处理的东西。谢谢你 – ABX 2013-04-29 06:23:00

0

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

+0

并与设置超时我的意思是设置它少一点或等于你的'同步'间隔 – uross 2013-04-28 22:02:29