Php 关闭选项卡后更新数据库中的注销时间

Php 关闭选项卡后更新数据库中的注销时间,php,jquery,mysql,ajax,codeigniter-3,Php,Jquery,Mysql,Ajax,Codeigniter 3,我的问题是,当用户关闭选项卡时,我必须调用ajax来更新数据库中的注销时间。所以,经过一些研究,我尝试了下面的代码,但仍然不起作用 我注意到了。在JS中添加下面的脚本后,它会在20秒后自动注销 我使用了下面的代码,但根据SO用户团队的建议,这不是正确的代码 window.onbeforeunload = function(){ // var msg="Are you sure want to close this tab"; // return msg; $.ajax({

我的问题是,当用户关闭选项卡时,我必须调用ajax来更新数据库中的注销时间。所以,经过一些研究,我尝试了下面的代码,但仍然不起作用

我注意到了。在JS中添加下面的脚本后,它会在20秒后自动注销

我使用了下面的代码,但根据SO用户团队的建议,这不是正确的代码

window.onbeforeunload = function(){
  // var msg="Are you sure want to close this tab";
  // return msg;
     $.ajax({
       method:"POST",
       async: false,
       url:baseUrl+"/Employee_control/logoutTimeUpdate"
   });
所以我把它改成这个,但仍然不起作用

var _wasPageCleanedUp = false;
function logoutTimeUpdate()
{
    if (!_wasPageCleanedUp)
    {
        $.ajax({
            type: 'GET',
            async: false,
            url:baseUrl+"/Employee_control/logoutTimeUpdate",
            success: function ()
            {
                _wasPageCleanedUp = true;
                alert("hello");
            }
        });
    }
}
$(window).on("unload", function ()
{
    logoutTimeUpdate();
});
控制器

 public function logoutTimeUpdate(){
       $updatedLogoutTime=$this->Employee_model->logoutTimeUpdate();
        if ($updatedLogoutTime == 1) {
         $this->session->unset_userdata('login_session');
         $this->session->sess_destroy();
        } 
    }
}
模型


您可以在卸载事件时编写代码。 例如

<!DOCTYPE html>
<html>
    <head>
       <title></title>
       <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    </head>
    <body>
       <div id="ProcessModel">

       </div>
        <script type="text/javascript">
          $(window).on('unload',function () {
                $.ajax({
                    type: 'GET',
                    async: false,
                    url: 'check.php?id=123'
                });
            });
        </script>
    </body>
</html>

$(窗口).on('unload',函数(){
$.ajax({
键入:“GET”,
async:false,
url:'check.php?id=123'
});
});

这将在关闭选项卡时调用。

向窗口对象添加一个事件,如-@kenzotenma,那么在我的问题中必须使用哪种代码?我如何使用链接中的答案调用ajax?将$(窗口)替换为,并放置
logoutTimeUpdate()介于两者之间。我猜问题出在
上的
$(窗口)。不起作用,因为它没有返回任何内容。出于某种原因,对诸如
beforeunload
unload
之类的事件的回调需要返回一些内容,但不确定原因。@kenzotenma,我检查了这个URL。我试过了,但没有为我工作。你能分享一下这个例子吗?因为我选择了卸载,在卸载之前,但两者都不适合我。
<!DOCTYPE html>
<html>
    <head>
       <title></title>
       <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    </head>
    <body>
       <div id="ProcessModel">

       </div>
        <script type="text/javascript">
          $(window).on('unload',function () {
                $.ajax({
                    type: 'GET',
                    async: false,
                    url: 'check.php?id=123'
                });
            });
        </script>
    </body>
</html>