Как выполнить функцию 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