Comment exécuter ajax function onbreforeunload?

Je développe un chat php / javascript.

Lorsque l'user se connecte, son nom d'user est inséré dans une table MySQL appelée queue . Cet insert renvoie mysql_insert_id() qui sera stocké dans une variable de session appelée $_SESSION['CHAT_QUEUE_ID']

J'ai besoin que la ligne de la table MySQL soit supprimée lorsque l'user ferme la page.

J'ai essayé ce qui suit, mais sans succès:

file js

 window.onbeforeunload = closeSession; function closeSession(){ $.ajax({ url: "/chat/process/chat.php", type: "GET" }); return "disconnected"; } window.onbeforeunload = closeSession; window.onbeforeunload = closeSession; function closeSession(){ $.ajax({ url: "/chat/process/chat.php", type: "GET" }); return "disconnected"; } function closeSession () { window.onbeforeunload = closeSession; function closeSession(){ $.ajax({ url: "/chat/process/chat.php", type: "GET" }); return "disconnected"; } $ .ajax ({ window.onbeforeunload = closeSession; function closeSession(){ $.ajax({ url: "/chat/process/chat.php", type: "GET" }); return "disconnected"; } url: "/chat/process/chat.php", window.onbeforeunload = closeSession; function closeSession(){ $.ajax({ url: "/chat/process/chat.php", type: "GET" }); return "disconnected"; } tapez: "GET" window.onbeforeunload = closeSession; function closeSession(){ $.ajax({ url: "/chat/process/chat.php", type: "GET" }); return "disconnected"; } returnner "déconnecté"; 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 $ delete = "DELETE FROM file WHERE id =". $delete= "DELETE FROM queue WHERE id = " . $_SESSION['CHAT_QUEUE_ID']; // query, etc $ _SESSION ['CHAT_QUEUE_ID']; $delete= "DELETE FROM queue WHERE id = " . $_SESSION['CHAT_QUEUE_ID']; // query, etc 

Est-ce qu'il y a un moyen de faire ça?

    Vous lancez votre ajax async (par défaut pour jquery – ajax). Mais le browser n'attendra rien lors du déchargement.

    essayez de définir async : false dans les réglages ajax. Mais vous ne pouvez jamais être sûr que cela fonctionnera dans tous les browsers à tout moment.

    voir le commentaire ici: http://api.jquery.com/unload/#dsq-comment-body-132164390