Search code examples
javascriptjqueryajaxonbeforeunload

PHP update database on close window


I am trying to update the database when the user close or refresh the browser. This is my code:

$(window).bind('unload', function(){
    $.ajax({
        type: 'get',
        async: false,
        url: 'liberaLugar.php?idCurso=2'
    });
});

Any help will be appreciated. Thanks in advance!


Solution

  • This should work for you in most cases. of course, if your server is unreachable, you could freeze the browser, so we should also add a timeout. it may also be helpul to give your user some visual indicator of what the hell is going on, so we should set the cursor to waiting.

    var unloaded = false;
    $(window).on('beforeunload', unload);
    $(window).on('unload', unload);  
    function unload(){      
        if(!unloaded){
            $('body').css('cursor','wait');
            $.ajax({
                type: 'get',
                async: false,
                url: 'liberaLugar.php?idCurso=2',
                success:function(){ 
                    unloaded = true; 
                    $('body').css('cursor','default');
                },
                timeout: 5000
            });
        }
    }
    

    EDIT: Synchronous AJAX is now deprecated in Webkit Browsers.