嘗試使用window.onbeforeunload
與全球.ajax()
功能和.abort()
。
var loadTimeout = setTimeout('sensorcellsLoad()', 3000);
function sensorcellsLoad(){
window.ajaxRequest = jQuery.ajax({
url: 'dashboard_content.php',
success: function(data) {
jQuery('#sensorcells').html(data);
loadTimeout = setTimeout('sensorcellsLoad()', 3000);
}
});
clock();
}
window.onbeforeunload = function() {
clearTimeout(loadTimeout);
window.ajaxRequest.abort();
};
無論您如何卸載它,它在卸載當前頁面之前總是會停止超時。
而且,加入類似下面的全球varible會是個不錯的做法:
var pageIsBeingRefreshed = false;
window.onbeforeunload = function() {
pageIsBeingRefreshed = true;
};
這將使得它可以過濾如果發生因爲實際的錯誤或整個頁面重新加載的Ajax錯誤。
if (pageIsBeingRefreshed) {
return;
} else {
//Do some actual error handling.
}
更新: 我已經修改了原來的代碼,以利用全球的窗口對象爲Ajax處理。
的jsfiddle可以在這裏找到:http://jsfiddle.net/cnoL26ve/1/
謝謝Magnus。如果我們停止setTimeout,它是否會停止已經啓動的頁面加載?因爲我的問題是,將數據從數據庫加載到儀表板需要時間(需要3-5秒)。我需要停止從數據庫加載。 – cvdogan
'clearTimeout'不會停止正在執行的ajax調用。 但是使用'.abort()'會。 我會用這段代碼更新我的帖子。 –
如何在我的代碼中使用.abort()? – cvdogan