Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 关闭浏览器时调用ajax,而不是更改url_Php_Jquery_Ajax - Fatal编程技术网

Php 关闭浏览器时调用ajax,而不是更改url

Php 关闭浏览器时调用ajax,而不是更改url,php,jquery,ajax,Php,Jquery,Ajax,我想在用户不从应用程序手动注销时插入注销时间戳,即,如果用户在未从系统注销的情况下关闭浏览器,则系统应在浏览器关闭事件或任何其他解决方案上注销,以使用jquery、ajax和php执行相同操作。我尝试了以下代码: <script type="text/javascript"> window.onbeforeunload = function() { $.ajax ({ url: 'logout.

我想在用户不从应用程序手动注销时插入注销时间戳,即,如果用户在未从系统注销的情况下关闭浏览器,则系统应在浏览器关闭事件或任何其他解决方案上注销,以使用jquery、ajax和php执行相同操作。我尝试了以下代码:

<script type="text/javascript">
      window.onbeforeunload = function() {
          $.ajax
            ({ 
                url: 'logout.php',
                data: "",
                type: 'post',
                success: function()
                {
                    .....
                }
            });
      }
</script>

window.onbeforeunload=函数(){
$.ajax
({ 
url:'logout.php',
数据:“,
键入:“post”,
成功:函数()
{
.....
}
});
}
但是window.onbeforeunload函数()的特点是,每当像chrome这样的webkit浏览器中的url发生变化时,就会将我注销。我需要一些跨浏览器的解决方案。关于这个问题,我在stackoverflow上看到了各种各样的问题,但我找不到任何有助于我解决这个问题的解决方案


我还需要提到,在logout.php中,我使用代码终止会话,并在数据库中插入查询,以及注销时间戳

我想为浏览器关闭时的ajax调用推荐以下代码

<script type="text/javascript">
    window.onbeforeunload = function() {

        var ticketId = $('#ticketId').val();
        $.ajax({
            url: '/ticket-window-close/'+ticketId,
            type: 'GET',
            async: false,
            timeout: 10000
        });
    };
</script>

window.onbeforeunload=函数(){
var ticketId=$('#ticketId').val();
$.ajax({
url:'/ticket window close/'+ticketId,
键入:“GET”,
async:false,
超时:10000
});
};

这是因为当用户移动到下一页时,站点中的每个页面都会被卸载!!!哼!我可能弄错了,如果我弄错了,请纠正我,但是如果浏览器关闭后没有剩余的浏览器,人们应该如何看到浏览器范围中显示的任何内容呢?我不知道。您可能是对的,但必须有某种方法,以便不管怎样,如果用户不手动注销,我们需要一些代码(在我的例子中是logout.php中编写的代码)来运行,以便数据库不具有注销日期值@这是可以理解的,先生@胡说八道。但如果你能提出一些适合我的解决方案,我们将不胜感激。你无法判断用户何时离开而不注销。你所能知道的就是他们已经有一段时间不活动了。这意味着当他们进入你网站的每个页面时,你必须更新一个
last\u active
时间戳。如果
now-last\u active>会话超时时间
。毕竟,在这段时间之后,会话将不再有效,因此他们将被迫再次登录。