0

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

我猜这与 onbeforeunload 有关,因为我有一个类似于此的简单登录脚本可以正常工作。

JavaScript

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

服务器.php

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

1 回答 1

0

Gah,它刚刚击中我,这是因为它异步发送 POST,所以窗口在它中间关闭。我相信您必须使用 $.ajax 并设置 async:false 才能使其在关闭窗口之前完成 POST。

于 2013-06-02T05:40:52.197 回答