Вопрос

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

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

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

Это было полезно?

Решение

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top