抱歉,我的母语不是英语:(

由于在Chrome 80版本中AJAX查询在卸载事件中不再起作用,因此我需要另一种选择,我阅读了有关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事件中看到的那样,它向我的PHP发送了3个变量,其中var2是一个数组,我如何使用Navigator.sendBeacon函数以相同的方式传递多个变量,您是否做了类似的事情?

最佳答案

您可以使用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

09-25 15:07