window.onbeforeunload выполняя запрос - PullRequest
3 голосов
/ 21 ноября 2010

Я пытаюсь выполнить пост-запрос, когда пользователь покидает страницу.Код, с которым я работаю:

<script type="text/javascript">
window.onbeforeunload = function(){
    var used = $('#identifier').val();
    $.post('conversation.php?leave=true',{ud:used});
}
</script>

Что-то не так с тем, что я здесь делаю?Результат, который я получаю в консоли ошибок FF, просто говорит, что другие не связанные функции / переменные не определены (так как они выгружаются).Любые советы или указатели для того, что мне нужно исправить?

1 Ответ

5 голосов
/ 21 ноября 2010

Простой ответ: вы не можете сделать асинхронный вызов AJAX в событии beforeunload надежно, он будет очень , вероятно, прерван до его завершения, так как мусор браузера соберет страницу. Вы можете сделать синхронный вызов, например:

$.ajax({ 
  type: "POST", 
  url: 'conversation.php?leave=true', 
  data:{ud:used}, 
  async: false
});

Пожалуйста, не делайте это, так как это задерживает вашего пользователя на странице дольше, чем необходимо, и предотвращает его уход, что приводит к негативному восприятию. Обратите внимание, что это также блокирует браузер во время его выполнения, в любом случае следует избегать async: false.

...