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

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

【解决方案】:

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 后台接受POST值的更多相关文章

  1. 后台接受ajax传递值的实例代码

    后台接受ajax传递值的实例代码: 使用ajax可以实现无刷新数据交互,下面是一段后台代码接收ajax传递值的实例代码供需要的朋友参考,希望能够带来帮助. ajax代码如下: $(function ( ...

  2. AJAX JQuery 调用后台方法返回值(不刷新页面)

    AJAX JQuery 调用后台方法返回值(不刷新页面) (1)无参数返回值(本人亲试返回结果不是预期结果) javascript方法: $(function () {             //无 ...

  3. C# 多线程编程,传参,接受返回值

    C# 多线程编程,传参,接受返回值 今天将多线程的知识有回顾了下,总结了几点: 新建一个线程(无参数,无返回值) Thread th = new Thread(new ThreadStart(Prin ...

  4. from表单中checkbox的多选,ajax转入后台,后台接受

    var check = [];//定义一个空数组 $("input[name='category']:checked").each(function(i){//把所有被选中的复选框 ...

  5. vue 简单实现父组件向子组件传值,简单来说就是子组件肆意妄为的调用父组件里后台返回的值

    首先在于父子组件传值的方法很多,本人在这里只是简单描述一下一个组件里面引用了子组件,那么子组件如何才能获取父组件中后台返回的值呢? 首先调用组件相信大家都应该明白了(不明白的自己撸撸文档), < ...

  6. 思路:controller层:后台如何取值 前端如何给name赋值 例如是id赋值还是自己随意定义

    思路:controller层:后台如何取值 前端如何给name赋值 例如是id赋值还是自己随意定义

  7. 页面传递的都是string ; 每个标签要有name的原因是为了取值 因为传递给后台是键值对的形式

    页面传递的都是string ; 每个标签要有name的原因是为了取值  因为传递给后台是键值对的形式

  8. Thymeleaf在前台下拉列表获取后台传的值

    Thymeleaf在前台下拉列表获取后台传的值 后台添加代码: /** * 新增机构 */ @GetMapping("/add") public String add(ModelM ...

  9. jquery中选择checkbox拼接成字符串,然后到后台拆分取值

    jquery中选择checkbox拼接成字符串,然后到后台拆分取值 js中的代码 $("#btn").click(function(){ var chenked=$("i ...

随机推荐

  1. AutoArchive settings explained

    AutoArchive settings explained Applies To: Outlook 2010 More... Less AutoArchive helps manage the sp ...

  2. 为Visual SVN使用签名后的域名证书

    装了个VisualSVN Server管理代码,可每次浏览的时候都会提示证书有问题,要不要继续神马的,好烦人,于是搜索了一下免费SSL证书,申请了一个,虽然不是绿的,但总算是不报问题了. 下面是整个过 ...

  3. 视频流协议HLS与RTMP 直播原理 点播原理

    小结: 1.HLS原理 视频--->图像.声音分别编码打包切割容器文件ts,建立纯文本索引文件.m3u8--->播放器http下载容器文件.索引文件,播放,下载 基于HLS可以实现直播和点 ...

  4. WCF引用 代码

    方法1: using (ChannelFactory<ICommonService> channelFactory = new ChannelFactory<ICommonServi ...

  5. Windows服务的调试

    1.服务为其他程序调用的情况:首先停止服务,在项目中设置断点,重新启动服务,点击项目中工具,附加到进程,运行调用服务的程序,即可进入之前设置的断点,进而进行调试. 2.服务内方法为自动执行的情况:首先 ...

  6. VC++SDK编程——鼠标的应用示例

    #include <Windows.h> #include <tchar.h> BOOLEAN InitWindowClass(HINSTANCE hInstance, int ...

  7. 踩坑之jinja2注释问题(Flask中)

    报错信息  jinja2.exceptions.TemplateSyntaxError  jinja2.exceptions.TemplateSyntaxError: Expected an expr ...

  8. leetcode -day 15 Distinct Subsequences

    1.  Distinct Subsequences  Given a string S and a string T, count the number of distinct subsequen ...

  9. 001-es6变量声明、解构赋值、解构赋值主要用途

    一.基本语法 1.1.声明变量的六种方法 参看地址:http://es6.ruanyifeng.com/#docs/let let:局部变量,块级作用域,声明前使用报错 var:全局变量,声明前使用 ...

  10. 010-shiro与spring web项目整合【四】缓存Ehcache

    一.Ehcache shiro每次授权都会通过realm获取权限信息,为了提高访问速度需要添加缓存,第一次从realm中读取权限数据,之后不再读取,这里Shiro和Ehcache整合. 1.添加Ehc ...