PHP后端接收不到AngularJs中$http.post发送的数据的问题
来源:互联网 发布:淘宝上卖的一碗泄油汤 编辑:程序博客网 时间:2024/05/16 05:24
1、问题描述
用angularJS中的$http服务碰到了一个问题:运用$http.post方法向后台传递数据时,后台的php页面获取不到data参数传过来的值。不论是这种姿势:$http.post( "1.php", { id: 1 }).success(function (data) { console.log(data); });
还是这种姿势:$http({ method: 'POST', url: '1.php', data: { id: 1 } }).success(function (data) { console.log(data); });
后台php中的$_POST或$_REQUEST都无法获取到data中的值:<?php echo json_encode($_POST);?>
输出为一个空数组。为了测试php本身是不是真的获取不到值,我就写了个表单测试下:<form action="1.php" method="post"> <input type="text" name="tid"> <input type="submit" value="submit"></form>
输出结果为:{"tid":"2"},也就是说表单里的值是可以获取的,但是用ajax发送的数据获取不了!那么表单数据和ajax发送的post数据之间有什么差异呢?于是我悄悄瞄一眼请求头...
打开firebug发现其实传成功了,折腾了好半天才发现,它只不过传输的格式与普通的传输格式比如jQuery里的$.post()方法传输的格式不同,$http.post()是以json格式传输,而$.post()是以表单参数形式传输,而php的$.POST[]是期待以后者的形式接收前台传输过来的数据的,因此读取不到json传的数据。问题一下子就出来了!表单发送的文本类型是表单类型,而angular的ajax默认发送的则是json数据。2、解决
I、.简单粗暴的直接改成$.post()方法,这样后台不用作任何修改,但是网上一些比较有经验的网友称这样可能违背使用angular的初衷。
II、引用JQuery,使用JQuery的$.param()方法序列化参数后传递
$http({ method : 'POST', url: 'process.php', data: $.param($scope.formData), //序列化参数 headers: { 'Content-Type': 'application/x-www-form-urlencoded' } ) })
III、
使用file_get_contents("php://input")获取再处理$input = file_get_contents("php://input",true); echo $input;VI、
修改Angular的$httpProvider的默认处理(参考:http://victorblog.com/2012/12/20/make-angularjs-http-service-behave-like-jquery-ajax
阅读全文
0 0
- PHP后端接收不到AngularJs中$http.post发送的数据的问题
- axios发送post请求后端接收不到的问题
- AngularJs中$http发送post或者get请求,SpringMVC后台接收不到参数值的解决办法
- AngularJs的$http发送POST请求,php无法接收Post的数据解决方案
- 解决Postman发送post数据但是Node.js中req.body接收不到数据的问题
- angularJS里的$http.post传数据到php接收问题
- PHP中接收send/POST/GET发送的数据
- weiphp2.0 controller.class.php里面add方法接收不到post请求发送的数据
- 解决angular的$http.post()提交数据时后台接收不到参数值问题的方法
- 使用angularjs的$http.post异步提交数据时,服务器接收不了的问题
- 前端AngularJS的POST请求,后端SpringMVC接收数据的小坑
- springmvc中从servletRequest中去post发送过来的数据取不到的问题
- AngularJS与后端php的数据交互
- Java中以POST的方式发送和接收数据
- AJAX中使用post,get接收发送数据的区别
- MVC5 WebAPI post请求后端拿不到值的问题
- struts2 数据传输问题---“POST方式提交数据量过大,在后台接收不到数据”问题的解决
- 关于angularjs中$http POST请求参数的问题
- NDK & JNI方式读写Android系统的GPIO
- C# WinForm获取 当前执行程序路径的几种方法
- stm32之定时器中断
- 在Linux环境下安装gcc/g++/gdb/vim,以及进行vim的配置
- 面试题42:翻转单词顺序(句子反转)
- PHP后端接收不到AngularJs中$http.post发送的数据的问题
- php 多维数组转一维数组
- 【转】Android ROM研究---Android build system增加模块
- ie删除文件html
- Android jenkins 打包发布
- miniui实现多附件上传
- pthread.h提示error C2011: “timespec”:“struct”类型重定义
- 对异或的理解
- java 抽奖