I'm developing a php/javascript chat.
When the user logs in, his/her username is inserted in a MySQL table called queue
.
This insert returns the mysql_insert_id()
that will be stored in a session variable called $_SESSION['CHAT_QUEUE_ID']
I need the MySQL table row to be deleted when the user closes the page.
I tried the following, but without success:
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
Is there any way to do this?
The onbeforeunload event occurs when the document is about to be unloaded. This event allows you to display a message in a confirmation dialog box to inform the user whether he/she wants to stay or leave the current page.
beforeunload event – the user is leaving: we can check if the user saved the changes and ask them whether they really want to leave. unload – the user almost left, but we still can initiate some operations, such as sending out statistics.
You fire your ajax async (default for jquery - ajax). But the browser won't wait for anything on unload.
try setting async : false
in the ajax-settings. But you can never be sure that this will work in all browsers everytime.
see the comment here: http://api.jquery.com/unload/#dsq-comment-body-132164390
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With