javascript - 当用户关闭浏览器窗口时发送ajax

标签 javascript php jquery ajax browser-close

<分区>

我的主要目标和实际场景:如果两个用户共享相同的凭据,那么第二个用户无法登录系统,直到第一个已经登录的用户注销系统。

实际上,当用户关闭浏览器窗口时,我想在服务器数据库上设置 login_flag=0。我在

之前用谷歌搜索并想出了发送 ajax 请求
$(window).on('unload', function(){ // ajax here with async:false });

$(window).on('beforeunload', function(){ // ajax here with async:false });

它工作正常。但在 Chrome 中,它会记录以下消息:

Synchronous XMLHttpRequest on the main thread is deprecated because of its detrimental effects to the end user's experience. For more help, check http://xhr.spec.whatwg.org/.

我再次用谷歌搜索相同的内容,并了解到在卸载事件中使用 Ajax 是令人沮丧的,并从 here 中找到了以下详细信息

enter image description here

简而言之,他们反对使用带有 async:false 的 ajax 和 window.unloadwindow.beforeUnload 方法。如果我从 Ajax 中删除 async 参数,那么它不会按预期工作。

如果我想在用户关闭浏览器窗口时在服务器端执行某些事件,正确的方法是什么?

最佳答案

我记得曾经遇到过类似的情况,一旦用户关闭窗口,我需要在服务器端执行操作。但是,我的研究得出了与您相同的结论,即不鼓励对窗口卸载事件使用任何类型的 ajax 调用。因此,我最终的做法是在窗口卸载事件中在客户端设置一个特定的 Cookie,当同一用户访问该页面时,我才执行所需的操作并从服务器端删除该 cookie。

我知道这并不是同时执行操作,但这是对我最有效的方法。

关于javascript - 当用户关闭浏览器窗口时发送ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28723044/

相关文章:

javascript - 最初隐藏 div 和动态隐藏它的区别

Javascript - 是否可以在定义后调用函数本身,然后在范围内的其他地方将其作为函数引用

javascript - 如何重新启动动画中的循环?

php oci_bind_by_name float

php - 用于计算每天订单总数的 SQL 查询?

jquery - 如何使用带有 em 值的 jQuery ScrollTop 函数?

javascript - react 中静态部分的条件渲染 - MERN

javascript - PHP/JavaScript : How to encode/decode strings best?

php - Highscores(最高分)排名计算和更新查询?

javascript - 如果文本区域有输入,如何防止关闭 blockUI