如何检索请求负载

问题描述 投票:0回答:2

我正在使用 PHP、ExtJS 和 ajax 商店。

它发送数据(创建、更新、销毁)而不是 POST 或 GET。在 Chrome 控制台中,我在

"Request Payload"
字段中看到我的传出参数为 JSON。
$_POST
$_GET
是空的。

如何在 PHP 中检索它?

php javascript json extjs
2个回答
285
投票

如果我理解正确的话,你只是通过 http body 传递 json 数据,而不是

application/x-www-form-urlencoded
数据。

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

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

如果你传递的是json,那么你可以这样做:

$data = json_decode($request_body);

$data
然后包含json数据是php数组。

php://input
是所谓的wrapper.

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".


12
投票

您还可以使用

writer
encode
设置 extJs
: true
,它会定期发送数据(因此,您将能够通过
$_POST
$_GET
检索数据)。

...值将作为请求参数的一部分发送 反对原始帖子(通过 docs 对 Ext.data.writer.Json 进行编码配置)

更新

还有docs说:

只有在定义根时,encode 选项才应设置为 true

所以,可能需要

writer
root
配置。

© www.soinside.com 2019 - 2024. All rights reserved.