提问人:nkuhta 提问时间:3/7/2012 最后编辑:ggorlennkuhta 更新时间:5/15/2023 访问量:126575
如何检索请求有效负载
How to retrieve Request Payload
问:
我正在使用 PHP、ExtJS 和 ajax 存储。
它发送数据(创建、更新、销毁时),而不是在 POST 或 GET 中。在 Chrome 控制台中,我在字段中将传出的参数视为 JSON。 并且是空的。"Request Payload"
$_POST
$_GET
如何在PHP中检索它?
答:
如果我理解正确的话,你只是通过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”。
评论
此外,您可以使用编码
设置 extJs,它将定期发送数据(因此,您将能够通过 和 检索数据)。writer
: true
$_POST
$_GET
...这些值将作为请求参数的一部分发送为 与原始帖子相反(通过 Ext.data.writer.Json 编码配置的文档)
更新
文档还说:
只有在定义根时,encode 选项才应设置为 true
所以,可能是必需的配置。writer
root
评论
writer
encode
评论