到目前为止,我有这个
window.addEventListener("beforeunload", function(e){
$.post('insert.php', {'postmessage':'CALL bor.update_records_exit(\'' + authUser + '\');'}, function(data) {
e.returnValue = null;
return null;
})
.fail(function(response) {
alert('Error: ' + response.responseText);
});
});
这是有效的,但并不可靠。有时发送请求,有时不发送,我不明白为什么。
我知道这与请求的同步性有关。我尝试使用.ajax()代替,并将async属性设置为false,但随后我意识到async:false已被取消。
我所需要做的就是在用户关闭浏览器或标签时发送一个最终的插入查询...请帮帮忙。
发布于 2020-11-15 16:23:45
不推荐使用async: false
的说法是正确的,但是在beforeunload
事件中发出AJAX请求时,您别无选择,只能使用它。事实上,这只是它唯一的合法用途。
这是因为在允许浏览器关闭之前,您需要等待请求完成。您现在看到的一些请求失败的行为正是出于这个原因;浏览器在请求管道中过早关闭。
https://stackoverflow.com/questions/64846812
复制