AJAX замена с sendBeacon - PullRequest
       1

AJAX замена с sendBeacon

2 голосов
/ 07 февраля 2020

Заранее извините, мой родной язык не английский sh: (

Поскольку в Chrome версии 80 запросы AJAX больше не работают в событии unload, мне требуется другой Кроме того, я читал о Navigator.sendBeacon проблема в том, что я не нашел пример для отправки нескольких данных, например, в AJAX есть это:

$(window).on('unload', function() {
    console.log('ajax unload');
    $.ajax({
        type: 'POST',
        url: 'config/myphpfile.php',
        async: false,
        data: {
            xvar1: var1,
            xvar2: var2,
            xvar3: 0
        },
        success: function(data) {
            console.log('work!');
        }
    });

Как вы можете видеть в этом AJAX Событие отправило 3 переменные на мой PHP, и одна из них - var2 - массив, как я могу передать несколько переменных одним и тем же способом с помощью функции Navigator.sendBeacon, вы сделали что-то подобное?

1 Ответ

1 голос
/ 07 февраля 2020

Вы можете использовать объект FormData

// URL to send the data to
let url = '/api/my-endpoint';

// Create a new FormData and add a key/value pair
let data = new FormData();

// Append data to FormData object
data.append('xvar1', var1);
data.append('xvar2', var2);
data.append('xvar3', 0);

let result = navigator.sendBeacon(url, data);

if (result) { 
    console.log('Success!');
} else {
    console.log('Failure.');
}

Я основал это решение на: https://www.smashingmagazine.com/2018/07/logging-activity-web-beacon-api/#using -navigator-sendbeacon

Подробнее об объекте FormData читайте здесь : https://developer.mozilla.org/en-US/docs/Web/API/FormData

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...