如何检索请求有效负载
我使用PHP , ExtJS和ajax商店 。
它发送数据(在创build,更新,销毁)不在POST或GET。 在Chrome控制台中,我在“ 请求负载 ”字段中将我的传出参数显示为JSON。 $ _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是一个只读stream,允许您从请求主体读取原始数据。 在POST请求的情况下,最好使用php://input而不是$ HTTP_RAW_POST_DATA,因为它不依赖于特殊的php.ini指令。 而且,对于缺省情况下$ HTTP_RAW_POST_DATA未被填充的情况,这对于激活always_populate_raw_post_data是一个潜在的更less内存密集的select。 php://input不可用enctype =“multipart / form-data”。
你也可以用encode
设置extJs writer
: true
,它会定期发送数据(因此,你将能够通过$_POST
和$_GET
检索数据)。
…值将作为请求参数的一部分发送,而不是原始发布(通过用于Ext.data.writer.Json的编码configuration的文档 )
UPDATE
另外文档说:
编码选项只能在定义根目录时设置为true
所以,可能, writer
的root
configuration是必需的。