一尘不染

如何在beforeunload上执行ajax函数?

php

我正在开发php / javascript聊天。

用户登录时,其用户名将插入名为的MySQL表中queue。此插入返回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

有什么办法吗?


阅读 384

收藏
2020-05-26

共1个答案

一尘不染

您触发ajax异步(jQuery的默认设置-ajax)。但是浏览器不会等待任何卸载。

尝试async : false在ajax 设置中进行设置。但是,您永远无法确定每次都能在所有浏览器中使用该功能。

2020-05-26