jQuery won't POST inside window.onbeforeunload


jQuery won't POST inside window.onbeforeunload

当用户使用jQuery的POST函数离开页面时,我试图基本上将数据库中的布尔"online"条目切换为0。我的问题是,这个条目在数据库中没有被切换为0。通过调试,我可以看到它永远不会在isset($_POST['logout'])之后执行,所以只要我没有打字错误,它似乎永远不会发送到服务器。

我猜这与onbeforeunload有关,因为我有一个简单的登录脚本,类似于这个,工作得很好。

JavaScript

window.onbeforeunload = function() {
    $.post("server.php",{logout:1,currentuser:currentuser});
}

server.php

if (isset($_POST['logout'])) {
    $currentuser = $_POST['currentuser'];
    mysqli_query($con,"UPDATE players SET online = 0 WHERE user = '$currentuser'");
}

哎呀,它击中了我,这是因为它是异步发送POST,所以窗口在中间关闭。我相信你得用$。设置async:false以使它在关闭窗口之前完成POST。