AngularJS踩坑(1)
来源:互联网 发布:淘宝美工接私活价格 编辑:程序博客网 时间:2024/05/16 18:29
AngularJS中的post与jQuery中post的区别
对比:
AngularJS:
$http.post('/myserver', {username: 'shang'}).success(function(){ // some code});
jQuery
$.post('/myserver', {username: 'shang'}, function() { // some code});
后台Express接受
req.body.username // jq: 'shang'; ng: undefined
jq会把作为JSON对象的序列化, 而Angular不会
解决办法:
- 引入jquery (不推荐)
- 指定header
var myobject = {username: 'shang'};function ObjecttoParams(obj) { var p = []; for (var key in obj) { p.push(key + '=' + encodeURIComponent(obj[key])); } return p.join('&');}$http({ method: 'POST', url: url, data: ObjecttoParams(myobject), headers: {'Content-Type':'application/x-www-form-urlencoded'}});
- 使用
angular-post-fix
https://gist.github.com/JensRantil/5713606
// Modifies $httpProvider for correct server communication (POST variable format)angular.module('http-post-fix', [], function($httpProvider) { // This code is taken from http://victorblog.com/2012/12/20/make-angularjs-http-service-behave-like-jquery-ajax/ // Use x-www-form-urlencoded Content-Type $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8'; // Override $http service's default transformRequest $httpProvider.defaults.transformRequest = [function(data) { /** * The workhorse; converts an object to x-www-form-urlencoded serialization. * @param {Object} obj * @return {String} */ var param = function(obj) { var query = ''; var name, value, fullSubName, 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; }; return angular.isObject(data) && String(data) !== '[object File]' ? param(data) : data; }];});
参考文档
- http://stackoverflow.com/questions/19254029/angularjs-http-post-does-not-send-data
- http://my.oschina.net/tommyfok/blog/287748
文章若有纰漏请大家补充指正,谢谢~~
http://blog.xinshangshangxin.com SHANG殇
0 0
- AngularJS踩坑(1)
- Angularjs-1
- AngularJS 1
- angularJs(1)
- [AngularJS 1] Introduction to AngularJS
- AngularJS踩坑(2)
- AngularJS-MVC(1-1)
- angularjs 教程1
- 1,什么是 AngularJS?
- angularjs 源码分析1
- AngularJs(Part 1)
- AngularJS笔记1
- 1、AngularJS是什么?
- angularJS 学习笔记1
- AngularJS——1
- AngularJS 学习笔记1
- AngularJS学习笔记1
- AngularJS - 1 (basic concepts)
- html css 响应式布局
- DaoCloud体验-使用node构建应用程序
- 在docker中使用pm2或forever
- Linux系统编程——文件描述符的复制:dup()和dup2()
- 简单数据结构之 vector 栈(C++ vector 实现)
- AngularJS踩坑(1)
- 【iOS官方文档翻译】iOS蓝牙的基本概念
- 【机器学习】信息、熵和信息增益
- WebSphere Message Broker MQOutput动态指定多个输出
- Linux系统编程——进程的介绍
- Chosen:select下拉选择框美化插件及问题
- 【后缀自动机】[HDU 4641]K-string
- AngularJS踩坑(2)
- 几个oracle 存储过程的例子