如何检索请求负载

2022-08-30 04:55:31

我正在使用PHPExtJSajax商店

它发送数据(在创建,更新,销毁时)不在POST或GET中。在 Chrome 控制台中,我在“请求有效负载”字段中看到我的传出参数为 JSON。$_POST$_GET 为空。

如何在PHP中检索它?


答案 1

如果我正确理解这种情况,您只是通过http正文而不是数据传递json数据。application/x-www-form-urlencoded

您可以使用以下代码段获取此数据:

$request_body = file_get_contents('php://input');

如果你正在传递json,那么你可以做:

$data = json_decode($request_body);

$data则包含 json 数据是 php 数组。

php://input是一个所谓的包装器

php://input 是一个只读流,允许您从请求正文中读取原始数据。在POST请求的情况下,最好使用 php://input 而不是$HTTP_RAW_POST_DATA,因为它不依赖于特殊的php.ini指令。此外,对于默认情况下未填充$HTTP_RAW_POST_DATA 的情况,它是激活always_populate_raw_post_data的内存密集程度较低的替代方法。php://input 不适用于 enctype=“multipart/form-data”。


答案 2

您还可以使用编码设置extJ,它将定期发送数据(因此,您将能够通过和)检索数据。writer: true$_POST$_GET

...这些值将作为请求参数的一部分发送,而不是原始帖子(通过Ext.data.writer.Json的编码配置文档

更新

文档还说:

仅当定义了根目录时,才应将编码选项设置为 true

因此,可能需要 的配置。writerroot