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

时间:2015-02-25 15:34:34

标签: javascript php jquery ajax browser-close

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

实际上,当用户关闭浏览器窗口时,我想在服务器数据库上设置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令人沮丧,并从here

中找到了以下详细信息

enter image description here

简而言之,他们反对使用带有async:falsewindow.unload方法的window.beforeUnload的ajax。如果我从Ajax中删除async param,那么它就无法正常工作。

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

1 个答案:

答案 0 :(得分:0)

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

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