【发布时间】:2011-10-26 13:38:02
【问题描述】:
我正在使用 jQplot 显示一个图表来监控数据。 为了刷新保存图表的 div,我每 5 秒调用一次 ajax 调用(请参阅下面的 JavaScript 摘录)。 在服务器上,PHP 脚本从数据库中检索数据。 成功后,在 5 秒后使用 JavaScript setTimeout(ajax,5000) 重新调用 ajax 调用。 出错时,将使用 setTimeout(ajax,5000) 重试 ajax 调用 10 次,然后再显示错误消息。 监控 XHR 得知浏览器在大约 200 次请求后崩溃。 作为临时补救措施,在 50 次迭代后发出 location.reload() 以防止浏览器崩溃。 这可行,但不是理想的情况。 非常感谢任何对此问题的更好解决方案。
谢谢你,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);
}
}
}
【问题讨论】:
标签: ajax browser crash settimeout