PHP接收JSON格式的数据

Posted Talk is easy, show me the code

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP接收JSON格式的数据相关的知识,希望对你有一定的参考价值。

在API服务中,目前流行采用json形式来交互。

给前端调用的接口输出Json数据,这个比较简单,只需要组织好数据,用json_encode($array) 转化一下,前端就得到json格式的数据。

接收前端提交的json数据稍微复杂一点,原因是:php默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型。因此,对型如text/xml 或者 soap 或者 application/octet-stream 和application/json格式之类的内容无法解析,如果用$_POST数组来接收就会失败!

此时可以使用$GLOBALS[‘HTTP_RAW_POST_DATA‘]  或  file_get_contents(‘php://input‘) 来获取提交的数据

 

查看手册,可以发现$GLOBALS[‘HTTP_RAW_POST_DATA‘]  和  $_POST的区别:

  $_POST:通过 HTTP POST 方法传递的变量组成的数组,是自动全局变量。

  $GLOBALS[‘HTTP_RAW_POST_DATA‘] :总是产生 $HTTP_RAW_POST_DATA 变量包含有原始的 POST 数据。此变量仅在碰到未识别 MIME 类型的数据时产生。$HTTP_RAW_POST_DATA 对于 enctype="multipart/form-data" 表单数据不可用。也就是说基本上$GLOBALS[‘HTTP_RAW_POST_DATA‘] 和 $_POST是一样的。但是如果post过来的数据不是PHP能够识别的,你可以用 $GLOBALS[‘HTTP_RAW_POST_DATA‘]来接收,比如 text/xml 或者 soap 等等。

  补充说明:PHP默认识别的数据类型是application/x-www.form-urlencoded标准的数据类型。

以上是关于PHP接收JSON格式的数据的主要内容,如果未能解决你的问题,请参考以下文章

我希望您将新信息(以 JSON 格式)异步发送到 PHP 页面。 PHP接收新数据并更新数据库

请教 JQUERY 如何 接收处理 JSON格式数据

php中 curl模拟post发送json并接收json(转)

php 接收 Android 传递的json 转 数组 问题

PHP REST 服务中的 JSON 格式问题从 AFNetworking 2.0 接收 POST

c#和php接收json数据方法