3

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

实际上,当用户关闭浏览器窗口时,我想login_flag=0在服务器数据库上进行设置。我用谷歌搜索并想出在之前发送一个 ajax 请求

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

或者

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

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

主线程上的同步 XMLHttpRequest 已被弃用,因为它会对最终用户的体验产生不利影响。如需更多帮助,请查看http://xhr.spec.whatwg.org/

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

在此处输入图像描述

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

如果用户关闭浏览器窗口,我想在服务器端进行一些活动,那么正确的方法是什么?

4

1 回答 1

0

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

我知道这并不能完全同时执行操作,但这是对我有用的最佳方法。

于 2015-02-25T15:41:07.413 回答