My Javascript needs to send some data to a server when the page closes, which I currently do with a synchronous AJAX (SJAX?) request in window.onbeforeunload
. The problem with this, of course, is that if my server takes too long or the network connection dies, the browser freezes.
From what I've read, it's not possible to specify a timeout for synchronous AJAX requests, and asynchronous AJAX requests don't work on window.onbeforeunload
. My best guess at how to solve this would be to use an asynchronous request, and then lock up the browser for some time to let the request finish:
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();
}
}
Would this work? Are there any potential issues with this method?