很多时候我们需要用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;
}];
});

最新文章

  1. Best Time to Buy and Sell Stock1,2,3,4
  2. MongoDB学习笔记(数据操作)
  3. 前端自动化测试工具doh学习总结(二)
  4. Eclipse启动时布局不合理调整
  5. 如何对HashMap按键值排序
  6. C#之桶中取黑白球问题
  7. Entity Framework Lambda 实现多列Group by,并汇总求和
  8. js判断页面放大缩小
  9. poj 1149 pigs(最大流)
  10. arrayAccess的接口使用
  11. Ubuntu 14.04 配置FTP
  12. 使用php实现网站验证码功能【博主推荐】
  13. .7-Vue源码之AST(3)
  14. 实现Windows程序的数据更新
  15. Python基本数据结构--列表
  16. [ SSH框架 ] Spring框架学习之一
  17. Oracle使用学习笔记(一)
  18. Java Number &amp; Math 类
  19. Python开发——函数【装饰器、高阶函数、函数嵌套、闭包】
  20. BZOJ3019 : [Balkan2012]handsome

热门文章

  1. yum 安装 5.6
  2. java web基础环境搭建
  3. C#编程规范
  4. js清空页面控件值
  5. /-- Encapsulated exception ------------\ java.lang.NoSuchMethodException: com.sjzdaj.po.Class.setN_id([Ljava.lang.String;)
  6. Xcode升级7.3 自动补全不提示导入的自定义类解决方案
  7. Android开发问题汇总(持续更新)
  8. “error LNK1169: 找到一个或多个多重定义的符号”的解决方法(转载)
  9. mongodb 备份与恢复
  10. Netty4.X 学习(一)