我想在用户关闭浏览器窗口时通知服务器。在窗口卸载时没有时间发送获取请求
我尝试了所有的
$(window).bind("beforeunload", function() {
$.get("${contextPath}/notify?direction=logout");
});
和
$(window).unload(function() {
$.get("${contextPath}/notify?direction=logout");
});
和
$(window).unload(function() {
$.ajax({
url: "${contextPath}/notify?direction=logout"
});
});
但既不工作做好了,尽管事实上,它是在手动,它可能说应该。
在Firefox中,我没有只在窗口关闭时发出通知,但在页面刷新时没有通知。在Chrome中我都没有。
我试图在Firebug或Chrome开发人员工具中跟踪此脚本,发现它在跟踪时已开始工作!所以我认为它不能正常工作,因为它没有时间在窗口关闭或导航之前发送请求。
这是真的吗?如何完成我的任务?
SOLUTION
这工作:
$(window).bind("beforeunload",
function() {
$.ajax({
async: false,
url: 'notify'
});
}
);
首先想到:AJAX是这个工作的错误工具。你应该使用SJAX(同步),AJAX通过定义释放GUI线程来继续处理[在这种情况下是卸载]。 – Shad 2012-02-10 22:18:27
看看这个答案:http://stackoverflow.com/a/9234785/252780 – 2012-02-10 22:20:15