如何在onbeforeunload上执行ajax函数?

我正在开发一个PHP / JavaScript聊天。

当用户login时,他/她的用户名被插入一个称为queue的MySQL表中。 该插入返回将存储在名为$_SESSION['CHAT_QUEUE_ID']的会话variables中的mysql_insert_id()

当用户closures页面时,我需要删除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 

有没有办法做到这一点?

你开火你的ajaxasynchronous(jQuery的默认 – Ajax)。 但浏览器不会等待任何卸载。

尝试在ajax设置中设置async : false 。 但是,你永远无法确定这个function会在所有的浏览器中都能正常工作。

看到这里的评论: http : //api.jquery.com/unload/#dsq-comment-body-132164390