当前位置: 首页 > 知识库问答 >
问题:

领航员。带应用程序的sendBeacon/x-www-form-urlencoded

裴学
2023-03-14

我正在尝试使用navigator在beforeuload事件上发送POST请求。sendBeacon,但数据没有到达PHP$\u POST。我认为这是因为当使用navigator时。sendBeacon标题内容类型始终设置为文本/普通;charset=UTF-8,但在我的例子中,因为我需要发送一个查询字符串,因此使用application/x-www-form-urlencoded

var amountOfApples = 0;

...

addEventListener("beforeunload", function(e) {
    navigator.sendBeacon("save.php", "key=apples&value=" + amountOfApples);
});

如何做到这一点,并确保标头设置为Application/x-wow-form-urlencoded


共有2个答案

景同
2023-03-14

阅读php://input并通过parse_str()运行它。基本上:

$MY_POST = null;
parse_str(file_get_contents('php://input'), $MY_POST);
公冶阳德
2023-03-14

Beacon API使用的Content-Type标头取决于传递给sendBeacon第二个参数的实例类型。

要发送应用程序/x-www-form-urlencoded,请使用urlsearchparms实例。

var params = new URLSearchParams({
   key : 'apples',
   values : amountOfApples
});
navigator.sendBeacon(anUrl, params);

要发送multipart/form data标题,请使用FormData实例。

var params = new FormData();
params.append('key', 'apples');
params.append('value', amountOfApples);
navigator.sendBeacon(anUrl, params);

要发送application/json标题,请使用Blob并设置其类型。

var data = {
   key : 'apples',
   values : amountOfApples
};

var params = new Blob(
    [JSON.stringify(data)], 
    {type : 'application/json'}
);
navigator.sendBeacon(anUrl, params);
 类似资料:
  • Jersey文档给出了如何在资源上注入HttpSession的示例。我应该如何注入(或以其他方式访问)在请求中发送的表单参数,并使用“Content Type:application/x-www-form-urlencoded”?我看到这些都是作为参数在方法上传递的,而且似乎没有注释,让我相信这里有一些怪癖? 我目前使用的(naive)工厂实现如下,JerseyHttpServletRequest

  • RESTAPI在映射到Java对象时采用输入内容类型:application/x-www-form-urlencoded,如 在表单输入请求中,我正在设置my_name和my_phone的值,但MyRequest对象的myName和myPhone为null。 我正在使用Jackson annotations 2.3 jar 有什么建议吗?可能有什么问题?

  • 我为Django API项目编写了一个基于angular的客户端应用程序。其中一个endpoint接受application/x-www-form-urlencoded格式的请求,因为它同时包含文件和字符串数据,我很确定它在服务器端工作正常——我已经使用POSTMAN准备了一个application/x-www-form-urlencoded请求: 当然,服务器响应正确,并且已添加文件。以下是确切

  • 问题内容: 我想上网本REST API,它接受三个参数: ,, 我做它像这样在AngularJS为: 但是我总是这样: 对象{数据:“ {”结果“:”假“}”“,状态:200,配置:对象,状态文本:”确定“,标头:功能} 要么 {“ data”:“ {\” result \“:\” false \“}”,“状态”:200,“ config”:{“方法”:“ POST”,“ transformReq

  • 我已经使用Springboot和ApacheCXF库实现了webservice。 如果header设置为content type:application/x-www-form-urlencoded,则会抛出“读取XMLStreamReader时出错”。 它的工作原理如果内容类型:应用程序/xml。 我在我们的遗留应用程序old Spring上公开了相同的Web服务,该应用程序托管在tomcat w

  • 问题内容: 我是Web API的新手。我想使用web-api接收HTTP POST数据。content-type为,请求主体为: (JSON格式)。 我的控制器是这样的: 但是formData始终为null。仅当我将请求正文更改为: 我可以找到已保存在我的字符串中。 所以我的问题是我应该如何接收具有以下格式的数据: ? 是否有一种简单的方法可以将JSON淡化为C#? 感谢帮助! 更新:我尝试使用模