如何检索请求有效负载

时间:2012-03-07 06:56:29

标签: php javascript json extjs

我正在使用 PHP ExtJS ajax商店

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

如何在PHP中检索它?

2 个答案:

答案 0 :(得分:225)

如果我理解了这种情况,你只是通过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是所谓的wrapper

  

php:// input是一个只读流,允许您读取原始数据   来自请求机构。在POST请求的情况下,它是可取的   使用php://输入而不是$ HTTP_RAW_POST_DATA,因为它没有   依赖于特殊的php.ini指令。而且,对于那些情况   默认情况下不会填充$ HTTP_RAW_POST_DATA,它是潜在的   激活的内存密集程度较低   always_populate_raw_post_data。 php://输入不可用   ENCTYPE = “多部分/格式数据”。

答案 1 :(得分:11)

此外,您可以使用encode writer设置extJ : true,并定期发送数据(因此,您将能够通过$_POST和{检索数据{1}})。

  

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

更新

同样docs说:

  

只有在定义根

时,才应将encode选项设置为true

因此,可能需要$_GET的{​​{1}}配置。