Я разрабатываю чат 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
Есть какой-либо способ сделать это?
Вы запускаете асинхронный асинхронный аймакс (по умолчанию для jquery – ajax). Но браузер не будет ждать чего-либо при разгрузке.
попробуйте установить async : false
в настройках ajax. Но вы никогда не можете быть уверены, что это будет работать во всех браузерах каждый раз.
см. комментарий здесь: http://api.jquery.com/unload/#dsq-comment-body-132164390