博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
php 后台接受POST值
阅读量:4705 次
发布时间:2019-06-10

本文共 1097 字,大约阅读时间需要 3 分钟。

【场景描述】:展示型企业站制作管理后台,前端框架: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标准的数据类型。

转载于:https://www.cnblogs.com/wwlhome/p/6390617.html

你可能感兴趣的文章
【Mongodb】---Scheme和Collections对应问题
查看>>
团队作业个人博客02
查看>>
改善代码设计 —— 优化物件之间的特性(Moving Features Between Objects)
查看>>
大型高性能ASP.NET系统架构设计
查看>>
php : 基础(6)
查看>>
在Linux自己Home下安装python
查看>>
SceneGrabber NET 视频批量自动截图软件使用技巧
查看>>
Codeforces985E. Pencils and Boxes (单调队列)
查看>>
python 打印进度条
查看>>
Art Pipeline for glTF
查看>>
Spring Boot配置
查看>>
芒果云 在线代码编辑器
查看>>
《从零开始学Swift》学习笔记(Day 16)——字典集合
查看>>
NOIP2012Day2 T1/T2题解
查看>>
hdu 2689
查看>>
C#和Unity总结Day01
查看>>
SQLAlchemy中解决数据库访问时出现的Incorrect string value: xxx at row 484
查看>>
5238-整数校验器-洛谷3月赛gg祭
查看>>
IOS 给按钮添加图片
查看>>
适合移动应用的日期时间拾取器
查看>>