创作性质
原创
文章价格
0
文章关键词
博文内容-公开
在PHP中,通过$_POST全局变量很容易从表单中获取POST数据,但是对于从前端框架(例如AngularJS、reactJs)发送的"Conthent-Type"为"application/json"的JSON数据,需要一种不同的方法来获取POST数据变量。
在这种情况下,数据以数据( raw data)方式发送,所以我们可以通过如下方法提取数据:
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
$data = json_decode(file_get_contents("php://input"));
print_r($data);
}
如果JSON数据无法正确解码,那么常量NULL将被赋值给$data。
需要注意的是,PHP当中json_encode和json_decode的解码功能相当原始,json字符串根据其json结构的不同,以及内部嵌套的层次和复杂性,其解码后的数据结构可能与原始json数据的结构不一致,例如,除了数据结构的第一级是一个数组可以被正确解码为php数组以外,其他层次的数组一句php版本的不同,有可能会被解析为对象。
因此,在使用解码数据之前,一定要进行相关解码后的数据的校验工作,使得数据可以与原始post数据结构一致为好。
另外一种方案是使用专门的序列化和反序列化工具来避免上述这种解码方式可能带来的数据结构不一致的差异。
适用drupal版本
Drupal 8