首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用sendBeacon替换AJAX

用sendBeacon替换AJAX
EN

Stack Overflow用户
提问于 2020-02-07 06:14:06
回答 1查看 1.9K关注 0票数 5

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

由于在Chrome版本80中,AJAX查询不再在unload事件中工作,我需要另一个替代方法,我读到关于Navigator.sendBeacon的文章,问题是我没有找到发送多个数据的示例,例如在AJAX中有以下内容:

代码语言:javascript
复制
$(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发送了三个变量,其中一个var2是一个数组,我如何用Navigator.sendBeacon函数以相同的方式传递多个变量,你做过类似的事情吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-02-07 06:57:53

您可以使用FormData对象

代码语言:javascript
复制
// 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

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60104350

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档