【发布时间】:2011-01-19 09:17:34
【问题描述】:
当页面关闭时,我的 Javascript 需要向服务器发送一些数据,我目前使用 window.onbeforeunload 中的同步 AJAX(SJAX?)请求来执行此操作。当然,这样做的问题是,如果我的服务器运行时间过长或网络连接中断,浏览器就会死机。
根据我的阅读,无法为同步 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();
}
}
这行得通吗?这种方法有什么潜在的问题吗?
【问题讨论】:
-
我个人觉得整个方法可能需要改变。窗口关闭事件很棘手,在一个浏览器上工作的东西肯定会在另一个浏览器上中断。你能告诉我们更多关于你的目标吗?然后有人可能会提出不同的方法。
标签: javascript ajax asynchronous onbeforeunload