如何阻止异步json调用的页面卸载事件?

时间:2010-08-24 07:09:54

标签: javascript jquery asynchronous

我正在尝试阻止页面的卸载事件,直到我从服务器获得客户端发起的异步json调用的响应。

为清楚起见,方案如下:我需要在关闭浏览器时将用户更改保存到数据库中。在这样做的时候,我会显示一个小div并在我们完成后隐藏它(隐藏它并不重要,页面已经消失了!)

在代码中,这正是我想要做的。 PS:我不想使用alert()

  
  window.onbeforeunload = function () {
var requestURL = "../foo/Save"; $("#dvMsg").show();
$.getJSON( requestURL, { changeId: 1, userId: 1 }, function (data) { // hide the dvMsg $("#dvMsg").show(); // page should be safe to unload });
};

问题是异步调用的性质,即它不会阻塞,并且在我们得到响应之前页面将被卸载。

有什么想法吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

如果事件是异步的,我认为根本无法完成。

为什么不让它同步?这可能是你获得它的最佳机会。