在页面关闭后允许AJAX请求完成

时间:2016-03-29 17:40:15

标签: javascript php ajax google-chrome safari

我目前正在使用您典型的日常网络编程语言(JavaScript,PHP等)开发聊天。聊天目前功能齐全。但是,我还有几个问题尚未成功解决。其中一个是跨浏览器问题。

我正在尝试在用户关闭标签时运行AJAX请求。此请求的PHP看起来像这样:

date_default_timezone_set("America/New_York");
    session_start();

    unset($_SESSION["onpage"]);

    if ($_POST['logout'] == "false") {
        sleep(5);
        if (isset($_SESSION["onpage"]) || !empty($_SESSION["onpage"])) die();
    }


    ...
    ...

AJAX正在:

$.ajax({ // this is jQuery
     type: "POST",
     url: "offline.php",
     data: {
        logout: out ? 'true' : 'false'
     },
     success: function (data) {
         document.location.reload();
     }
});

基本上,当用户关闭标签时(在这种情况下$_POST['logout'] 等于false),请求应该在5秒后完成({{1} }) 完成了。这是因为我不想在用户只是刷新页面时才会触发此请求,只有在确认他离开页面时才会被触发。

这是跨浏览器问题的来源。我想要实现的功能在Safari中完美运行。这是在刷新时,请求没有完成,但如果我关闭选项卡,5秒后它会执行它想要做的事情并完成。但是,在我点击刷新时的chrome上,刷新本身不会完成,直到5秒结束已经结束,这意味着请求完成,无论如何。 Chrome正在等待AJAX​​完成,而Safari则没有。

有没有简单的解决这个问题?

修改

我在评论中的建议中尝试了以下代码:

sleep(5)

然而,它没有成功运作。

0 个答案:

没有答案