我正在使用jQplot顯示一個圖形來監視數據。 要刷新持有該圖的div,我每5秒調用一次ajax調用(請參閱下面的JavaScript摘錄)。 在服務器上,PHP腳本從數據庫中檢索數據。 成功時,使用JavaScript setTimeout(ajax,5000)在5秒後重新調用ajax調用。 錯誤時,在顯示錯誤消息之前,使用setTimeout(ajax,5000)重試ajax調用10次。 監控XHR獲悉大約200次請求後瀏覽器崩潰。 作爲臨時補救措施,50次迭代後發佈location.reload()以防止瀏覽器崩潰。 這可行,但不是理想的情況。 對此問題的任何更好的解決方案非常感謝。ajax settimeout刷新div
感謝和問候,JZB
function ajax() {
$.ajax({
cache: false,
url: 'monitor.php',
data : { x: id },
method: 'GET',
dataType: 'json',
success: onDataReceived,
error: onDataError
});
function onDataReceived(series) {
$('#chartdiv_bar').html('');
$.jqplot('chartdiv_bar', [series['initHits']], CreateOptions(series,'Inits'));
errorcount = 0;
setTimeout(ajax, 5000);
}
function onDataError(jqXHR, textStatus, errorThrown) {
errorcount++;
if (errorcount == 10) {
alert("No server response:\n\n" + textStatus + "\n" + errorThrown);
} else {
setTimeout(ajax, 5000);
}
}
}
感謝您的提示。建議使用clearTimeout不能解決問題。 監控XHR仍然顯示請求建立,直到瀏覽器崩潰,大約有200個請求。 我相信這些是ajax請求,而不是定時器請求,我想不出除了重新加載頁面來清除它們。 再次,非常感謝解決方案的建議。 – user1014584
哦,抱歉,沒有工作。您是否嘗試從代碼中刪除jqplot調用?也許可以使用提示語句。只是爲了排除jqplot的問題。 – CW30Meters