gpt4 book ai didi

javascript - 用 sendBeacon 替代 AJAX

转载 作者:行者123 更新时间:2023-12-01 04:34:04 26 4
gpt4 key购买 nike

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

由于在 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

关于javascript - 用 sendBeacon 替代 AJAX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60104350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com