【发布时间】:2019-04-17 01:13:24
【问题描述】:
window.onbeforeunload 事件未在服务器端发送 ajax 请求
我想在用户关闭浏览器或选项卡时注销用户。我已经实现了window.onbeforeunload 事件,但是在这个方法上,ajax 请求不起作用。
window.onbeforeunload = function() {
var d = {
userid: 123
};
$.ajax({
type: 'POST',
url: 'https://example.com/api/logout',
data: d,
async: false
});
return null;
};
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
need html perhaps
【问题讨论】:
-
这是否被调用,你能确认是这样吗?注意:通常我认为
window.addEventListener("beforeunload", function(event) { ... });应该是事件监听器的首选形式。您还可能希望在卸载之前将其返回event.preventDefault(); -
添加
alert以查看代码是否被命中。 -
注意:
async:false已弃用,请参阅 stackoverflow.com/q/11448011/125981 和 api.jquery.com/jQuery.ajax -
如果用户打开并登录了两个浏览器窗口/选项卡怎么办?这可能会带来您可能会处理的可用性问题。
标签: javascript jquery