php 后台接受POST值

【场景描述】:展现型企业站制做管理后台,前端框架:vue.js2.0,bootstrap,后台语言:phpphp

【问题描述】:使用管理后台向接口发送请求时,接口使用PHP的$_POST['args'],接收提交的字段;在使用原始的表单submit,后台可以正常接收到提交的字段。可是使用vue或者angularjs等js框架提交时,因为提交的是JSON格式的字段,使用$_POST[]是接收不到的;前端

【解决方案】:vue

PHP接收JSON格式的数据 在API服务中,目前流行采用json形式来交互。angularjs

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

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

此时能够使用$GLOBALS['HTTP_RAW_POST_DATA'] 或 file_get_contents('php://input') 来获取提交的数据 查看手册,数组

能够发现$GLOBALS['HTTP_RAW_POST_DATA'] 和 $_POST的区别:   前端框架

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

$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标准的数据类型。

相关文章
相关标签/搜索