angular的post传参后台php无法接收
2024-10-15 03:40:14
很多时候我们需要用ajax提交post数据,angularjs与jq类似,也有封装好的post。
但是jQuery的post明显比angularjs的要简单一些,人性化一些。
两者看起来没什么区别,用angularjs的$http提交的数据,在php服务器端却无法通过$_REQUEST/$_POST获取到。
这是因为两者的post对header的处理有所不同……jQuery会把作为JSON对象的myData序列化,而Angular不会。
解决方案:
修改Angular的$httpProvider的默认处理(最完美的解决方案)
angular.module('MyModule', [], function($httpProvider) {
// Use x-www-form-urlencoded Content-Type
$httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8'; /**
* The workhorse; converts an object to x-www-form-urlencoded serialization.
* @param {Object} obj
* @return {String}
*/
var param = function(obj) {
var query = '', name, value, fullSubName, subName, subValue, innerObj, i; for(name in obj) {
value = obj[name]; if(value instanceof Array) {
for(i=0; i<value.length; ++i) {
subValue = value[i];
fullSubName = name + '[' + i + ']';
innerObj = {};
innerObj[fullSubName] = subValue;
query += param(innerObj) + '&';
}
}
else if(value instanceof Object) {
for(subName in value) {
subValue = value[subName];
fullSubName = name + '[' + subName + ']';
innerObj = {};
innerObj[fullSubName] = subValue;
query += param(innerObj) + '&';
}
}
else if(value !== undefined && value !== null)
query += encodeURIComponent(name) + '=' + encodeURIComponent(value) + '&';
} return query.length ? query.substr(0, query.length - 1) : query;
}; // Override $http service's default transformRequest
$httpProvider.defaults.transformRequest = [function(data) {
return angular.isObject(data) && String(data) !== '[object File]' ? param(data) : data;
}];
});
最新文章
- Best Time to Buy and Sell Stock1,2,3,4
- MongoDB学习笔记(数据操作)
- 前端自动化测试工具doh学习总结(二)
- Eclipse启动时布局不合理调整
- 如何对HashMap按键值排序
- C#之桶中取黑白球问题
- Entity Framework Lambda 实现多列Group by,并汇总求和
- js判断页面放大缩小
- poj 1149 pigs(最大流)
- arrayAccess的接口使用
- Ubuntu 14.04 配置FTP
- 使用php实现网站验证码功能【博主推荐】
- .7-Vue源码之AST(3)
- 实现Windows程序的数据更新
- Python基本数据结构--列表
- [ SSH框架 ] Spring框架学习之一
- Oracle使用学习笔记(一)
- Java Number &; Math 类
- Python开发——函数【装饰器、高阶函数、函数嵌套、闭包】
- BZOJ3019 : [Balkan2012]handsome
热门文章
- yum 安装 5.6
- java web基础环境搭建
- C#编程规范
- js清空页面控件值
- /-- Encapsulated exception ------------\ java.lang.NoSuchMethodException: com.sjzdaj.po.Class.setN_id([Ljava.lang.String;)
- Xcode升级7.3 自动补全不提示导入的自定义类解决方案
- Android开发问题汇总(持续更新)
- “error LNK1169: 找到一个或多个多重定义的符号”的解决方法(转载)
- mongodb 备份与恢复
- Netty4.X 学习(一)