Запрос Ajax с JQuery на странице разгрузки

Я пытаюсь сделать это:

$(window).unload( function () { $.ajax({ type: "POST", url: "http://localhost:8888/test.php?", data: "test", success: function(msg){ alert( "Data Saved: " + msg ); } }); alert (c); }); 

Однако предупреждение об успешном завершении никогда не отображается, и этот запрос, похоже, даже не ударяет по серверу. Что я делаю не так?

6 Solutions collect form web for “Запрос Ajax с JQuery на странице разгрузки”

Я считаю, что вам нужно сделать запрос синхронным (он по умолчанию asynchronous), используя параметр async : false .

Попробуйте вызвать его с помощью async = false;

 jQuery.ajax({url:"http://localhost:8888/test.php?", async:false}) 

Я просто попробовал.

Лучшее решение – использовать navigator.sendBeacon . Это совершенно новая функциональность, которая начинает внедряться в новые версии браузеров. Функция доступна в браузерах, новее, чем Chrome 39 и Firefox 31. Она не поддерживается Internet Explorer и Safari на момент написания. Чтобы убедиться, что ваш запрос отправляется в браузерах, которые еще не поддерживают новую функциональность, вы можете использовать это решение:

 var navigator.sendBeacon = navigator.sendBeacon || function (url, data) { var client = new XMLHttpRequest(); client.open("POST", url, false); // third parameter indicates sync xhr client.setRequestHeader("Content-Type", "text/plain;charset=UTF-8"); client.send(data); }; 

Однако эта функция не позволяет регистрировать обратный вызов onsuccess.

В спецификации HTML 5 указано, что alert() , prompt() и т. Д. Не будут доступны во время window.unload() . Дополнительную информацию см. В окне window.unload () . Вы можете проверить результат, используя console.log('success'); вместо alert() .

Ваша функция и вызов Ajax выглядят прекрасно, поэтому я предполагаю, что окно вашего браузера закрыто до того, как вызов ajax успеет перейти на сервер и обратно. Вызов ajax может вернуть что-то, когда окно закрывается, попробуйте добавить функцию ошибки к вашему вызову ajax, чтобы убедиться, что это так:

 error: function (xhr, textStatus) { alert('Server error: '+ textStatus); } 

Может быть, у вас будет больше успеха с использованием события onbeforeunload ?

  $(window).bind('beforeunload', ... 
  • jQuery получить все div, которые не имеют атрибута classа
  • Получить данные из ввода файла в JQuery
  • $ .ajax call отлично работает в IE8 и не работает в браузерах Firefox и Chrome
  • Твиттер Bootstrap Collapse Direction-Horizontal вместо вертикальной
  • XMLHttpRequest Origin null не разрешен Access-Control-Allow-Origin для файла: /// для файла: /// (без сервера)
  • Добавление jQuery в PrimeFaces приводит к тому, что Uncaught TypeError по всему месту
  • Передайте массив в ajax-запрос в $ .ajax ()
  • Как проверить, связано ли событие click - JQuery
  • Что такое «традиционный стиль параметризации сериализации» в JQuery
  • «dragleave» родительского элемента срабатывает при перетаскивании дочерних элементов
  • Как использовать радио в случае изменения?
  • Interesting Posts

    Как изменить цвет плавающей метки TextInputLayout

    std :: vector :: resize () vs. std :: vector :: reserve ()

    Может ли Windows использовать оболочку Linux вместо cmd?

    В чем разница между многоядерной системой proc и multiproc?

    Отправка форматированного текстового сообщения Lotus Notes из Excel VBA

    MSVC не расширяет __VA_ARGS__ правильно

    Как десериализация WCF создает объекты без вызова конструктора?

    Какая правильная процедура безопасного удаления наклеек с ноутбука?

    Должен ли я ссылаться на self.property в методе init с ARC?

    Почему Outlook 2010 дает сообщение «Создание нового элемента из выбранных элементов может занять некоторое время … вы уверены, что создали новый элемент …?

    Как настроить ведение журнала Java с помощью файла свойств? (java.util.logging)

    Не удается завершить установку kali linux без cd или usb, но я не использую ни

    Файл данных конфигурации загрузки Windows не содержит действительной записи os

    C # Разделение строк?

    DSIM не работает. Работал один раз, но SFC терпел неудачу. Теперь DSIM не работает при восстановлении

    Давайте будем гением компьютера.