我正在开发一个 php/javascript 聊天。
当用户登录时,他/她的用户名被插入到名为 queue
的 MySQL 表中。
此插入返回 mysql_insert_id()
,它将存储在名为 $_SESSION['CHAT_QUEUE_ID']
我需要在用户关闭页面时删除 MySQL 表行。
我尝试了以下方法,但没有成功:
js文件
window.onbeforeunload = closeSession;
function closeSession(){
$.ajax({
url: "/chat/process/chat.php",
type: "GET"
});
return "disconnected";
}
chat.php
$delete= "DELETE FROM queue WHERE id = " . $_SESSION['CHAT_QUEUE_ID'];
// query, etc
有什么办法吗?
最佳答案
你启动了 ajax async(jquery 的默认设置 - ajax)。但是浏览器不会等待任何卸载。
尝试在 ajax 设置中设置 async : false
。但是您永远无法确定这是否每次都适用于所有浏览器。
请看这里的评论: http://api.jquery.com/unload/#dsq-comment-body-132164390
关于php - 如何执行ajax函数onbeforeunload?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9701734/