2011-09-23 121 views
1

我需要执行一次ajax请求,每次用户决定离开页面时发送一些数据服务器端。不过,我不想在离开时打乱他们:我不希望弹出消息出现。目前我的代码是这样的:javascript中的Ajax window.beforeunload:返回错误

window.onbeforeunload=function(){ 
    unloadAjax(); 
} 

这不起作用,并导致一个瞬间ajax错误消息出现。但是,如果我在onbeforeunload函数内添加return false;语句,则ajax可以正常工作。我该如何解决这个问题?

回答

2

当您添加return false时,显示一个确认对话框,延缓页面卸载。同时,AJAX请求结束。如果没有包含return声明,该页面将立即卸载,终止所有活动连接(并破坏您的AJAX请求)。

+0

我得到了那部分,但仍然不知道如何延迟卸载刚好足以让ajax完成 – whamsicore

+0

如果您的请求不需要很长时间,请使用同步AJAX请求。但是,您应该小心使用此方法。仅仅因为你想要通知服务器,暂时停止浏览器的时间不够用户友好。如果你的网页显然是一个编辑器(包括必须保存的数据),那么最好使用'return'通过'beforeunload'保存''''。 –

+0

谢谢,异步请求做到了 – whamsicore