How to execute ajax function onbeforeunload?

二次信任 提交于 2019-11-26 02:58:40

问题


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?


回答1:


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



来源:https://stackoverflow.com/questions/9701734/how-to-execute-ajax-function-onbeforeunload

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!