4 javascript ajax onbeforeunload
我正在尝试使用 发送事件POST请求,但数据未到达 PHP 。我认为这是因为使用时标头始终设置为,但在我的情况下,因为我需要发送查询字符串,因此使用.beforeunloadnavigator.sendBeacon$_POSTnavigator.sendBeaconContent-Typetext/plain;charset=UTF-8application/x-www-form-urlencoded
var amountOfApples = 0;
...
addEventListener("beforeunload", function(e) {
navigator.sendBeacon("save.php", "key=apples&value=" + amountOfApples);
});
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点并确保标题设置为application/x-www-form-urlencoded?
Content-TypeBeacon API 使用的标头取决于传递给sendBeacon第二个参数的实例类型。
要发送application/x-www-form-urlencoded,请使用UrlSearchParams实例。
var params = new URLSearchParams({
key : 'apples',
values : amountOfApples
});
navigator.sendBeacon(anUrl, params);
Run Code Online (Sandbox Code Playgroud)
要发送multipart/form-data标头,请使用FormData实例。
var params = new FormData();
params.append('key', 'apples');
params.append('value', amountOfApples);
navigator.sendBeacon(anUrl, params);
Run Code Online (Sandbox Code Playgroud)
要发送application/json标头,请使用Blob并设置其类型。
var data = {
key : 'apples',
values : amountOfApples
};
var params = new Blob(
[JSON.stringify(data)],
{type : 'application/json'}
);
navigator.sendBeacon(anUrl, params);
Run Code Online (Sandbox Code Playgroud)