データをモニタするためにjQplotを使用してグラフを表示しています。 グラフを保持するdivをリフレッシュするには、5秒ごとにajax呼び出しを呼び出します(下記のJavaScriptの抜粋を参照)。 サーバー上で、PHPスクリプトはデータベースからデータを取得します。 成功すると、JavaScriptのsetTimeout(ajax、5000)を使用して5秒後にajax呼び出しが再呼び出しされます。 エラー時に、エラーメッセージを表示する前にajax呼び出しをsetTimeout(ajax、5000)で10回試行します。 XHRは、約200回のリクエスト後にブラウザがクラッシュすることを認識します。 一時的な対策として、ブラウザがクラッシュするのを防ぐために、50回の繰り返し後にlocation.reload()が発行されます。 これは機能しますが、理想的な状況ではありません。 この問題の解決策があれば、非常に感謝しています。ajax divをリフレッシュするためのsettimeout
おかげに関して、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