2013-04-28 83 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