私のJavascriptは、ページが閉じたときにサーバーにデータを送信する必要があります。これは、現在、の同期AJAX(SJAX?)リクエストで行っていwindow.onbeforeunload
ます。もちろん、これに伴う問題は、サーバーに時間がかかりすぎたり、ネットワーク接続が切断されたりすると、ブラウザーがフリーズすることです。
私が読んだところによると、同期AJAXリクエストのタイムアウトを指定することはできず、非同期AJAXリクエストはで機能しませんwindow.onbeforeunload
。これを解決する方法についての私の最善の推測は、非同期リクエストを使用してから、しばらくの間ブラウザをロックしてリクエストを終了させることです。
window.onbeforeunload = function() {
doSomeAjax(); // asynchronous request
var now = new Date();
var time_limit = now.getTime()+2000; // 2,000 ms
while(now.getTime() < time_limit) {
now = new Date();
}
}
これは機能しますか?この方法に潜在的な問題はありますか?