AJAX在浏览器关闭时运行PHP查询

AJAX在浏览器关闭时运行PHP查询,php,ajax,Php,Ajax,我想在浏览器关闭时运行一个查询,将联机用户的状态从1设置为0 我四处搜索,找到了两种方法,想知道哪种更好 方法1: window.onbeforeunload = function() { $.ajax({ url: 'logout.php', type: 'GET', async: false, timeout: 4000 }); }; 方法2: $(window).unload(function() { $

我想在浏览器关闭时运行一个查询,将联机用户的状态从1设置为0

我四处搜索,找到了两种方法,想知道哪种更好

方法1:

window.onbeforeunload = function() {
    $.ajax({
        url: 'logout.php',
        type: 'GET',
        async: false,
        timeout: 4000
    });
};
方法2:

$(window).unload(function() {
  $.ajax({
    url:"logout.php",
    type:"POST",
    async:false, // browser waits till xhr completed
    success:function() {
      alert("bye!");
    }
  });
});
Logout.php

mysql_query("UPDATE `users` SET `status` = '0' WHERE `user_id` = ".$session_user_id."");

感谢您的帮助

要检查在线用户,您应该使用其他方法,如果他们强制关闭浏览器,您的脚本将无法检测到


要检查在线用户,您应该每5分钟向他们发送一次数据,如果达到数据,则他们在线,否则他们不在线。您应该使您的系统像这样而不是那样。

我有一个解决方案,可以使用下面的代码

<script type="text/javascript">
    window.onbeforeunload = function() {
        $.ajax({
            url: URL+param,
            type: 'GET',
            async: false,
            timeout: 10000
        });
    };
</script>

window.onbeforeunload=函数(){
$.ajax({
url:url+param,
键入:“GET”,
async:false,
超时:10000
});
};

我投票支持第一个。请记住,卸载将在重新加载页面、离开页面或甚至使用浏览器的“向前/向后历史记录”按钮时触发。是的,在这种情况下,第一个按钮是可以使用的。@GoGo我的意思是,第一个适合检查用户是否在线/理想。