【问题标题】:AJAX Running a PHP query on browser closeAJAX 在浏览器关闭时运行 PHP 查询
【发布时间】:2014-05-16 10:16:54
【问题描述】:

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

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

方法一:

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

方法二:

$(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."");

感谢所有帮助!

【问题讨论】:

  • 我投票给第一个。
  • 请记住,在重新加载页面、导航离开页面甚至使用浏览器的前进/后退历史按钮时,都会触发卸载。
  • 是的,第一个在这种情况下是合适的。
  • @GoGo 我的意思是第一个适合检查用户是否在线/理想。

标签: php ajax


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-24
      • 2011-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-21
      • 2012-07-15
      相关资源
      最近更新 更多