Как выполнить функцию ajax onbeforeunload?

Я разрабатываю чат php/javascript.

Когда пользователь входит в систему, его имя пользователя вставляется в таблицу MySQL с именем queue. Эта вставка возвращает mysql_insert_id(), которая будет храниться в переменной сеанса с именем $_SESSION['CHAT_QUEUE_ID']

Мне нужно, чтобы строка таблицы MySQL была удалена, когда пользователь закрывает страницу.

Я пробовал следующее, но безуспешно:

js file

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

Есть ли способ сделать это?

Ответ 1

Вы запускаете асинхронный асинхронный аймакс (по умолчанию для jquery - ajax). Но браузер не будет ждать чего-либо при разгрузке.

попробуйте установить async : false в настройках ajax. Но вы никогда не можете быть уверены, что это будет работать во всех браузерах каждый раз.

см. комментарий здесь: http://api.jquery.com/unload/#dsq-comment-body-132164390