jQuery不会在window.onbeforeunload中发布POST

时间:2013-06-02 05:30:14

标签: php javascript sql jquery post

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

我猜这与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'");
}

1 个答案:

答案 0 :(得分:0)

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