php - 如何执行ajax函数onbeforeunload?

标签 php javascript jquery onbeforeunload

我正在开发一个 php/javascript 聊天。

当用户登录时,他/她的用户名被插入到名为 queue 的 MySQL 表中。 此插入返回 mysql_insert_id(),它将存储在名为 $_SESSION['CHAT_QUEUE_ID']

的 session 变量中

我需要在用户关闭页面时删除 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/

相关文章:

php - MySQL 选择列 LIKE 且不为空的位置

php - mysqli_fetch_assoc()需要参数/调用成员函数bind_param()错误。如何获取并修复实际的mysql错误?

php - 是否有一种标准的方法来处理与 PHP 中的条件分开的设计 (CSS)?

jquery - 如何使用 CSS 将 "+"旋转为 "x"?

javascript - 模式窗口的 Bootstrap 下拉问题

javascript - 通过 .remove() 删除父 div;

php - 查询命令的 fatal error

Javascript 同时创建对象和数组

javascript - 验证电子邮件地址

javascript - 如何获取持续时间小于一小时的格式 "00:34"moment.js