我想在用戶關閉瀏覽器窗口時通知服務器。在窗口卸載時沒有時間發送獲取請求
我嘗試了所有的
$(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