我的主要目标和实际情况:如果两个用户共享相同的凭据,则第二个用户无法登录系统,直到第一个已登录的用户登出系统。 / p>
实际上,当用户关闭浏览器窗口时,我想在服务器数据库上设置login_flag=0
。我用谷歌搜索并想出通过
$(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
中找到了以下详细信息
简而言之,他们反对使用带有async:false
或window.unload
方法的window.beforeUnload
的ajax。如果我从Ajax中删除async
param,那么它就无法正常工作。
如果我想在服务器端执行某些活动,如果用户关闭浏览器窗口,那么正确的方法是什么?
答案 0 :(得分:0)
我记得在用户关闭窗口后需要在服务器端执行操作的情况类似。但是,我的研究结果与您的研究结果相同,不鼓励在窗口卸载事件上使用任何类型的ajax调用。所以,我最后的方法是在窗口卸载事件中在客户端设置一个特定的Cookie,当同一个用户访问该页面时,我才执行了我所需的操作并从服务器端删除了cookie。
我知道这并不是同时执行动作,但这是对我有用的最佳方法。