当用户使用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'");
}
答案 0 :(得分:0)
Gah,它只是打了我,这是因为它正在异步发送POST,所以窗口在它的中间关闭。我相信你必须使用$ .ajax并设置async:false才能在关闭窗口之前完成POST。