软测homework1
cnblog: http://www.cnblogs.com/taehyungv97/
Github: https://github.com/kthlj
在angular框架应用学习过程中出现的问题
错误:在angular使用过程中出现$http.post()参数类型不正确的错误。
当时正在学习基于angular的web开发,要求实现一个较为初级的网上商城管理系统。在通过$http.post()方法传递数据时,所带参数是json对象,而不是表单数据,导致参数可以被jQuery的$.post()方法获取,但却无法通过服务器使用一般方法得到正确的参数对象。
错误原因:对于header的处理,jQuery会将json对象——myData序列化,但angular并不会做这样的处理。即对于var myData{m:?,n:?}来说,jQuery会在post数据之前将myData转换为字符串。
发现:通过对https://angular.cn/tutorial中范例项目的学习,对比代码的不同,找到可能出错的地方并按照官网项目的方法进行修改,最终解决了问题。
问题解决:对$httpProvider的默认处理进行修改
$httpProvider.defaults.transformRequest=function(obj){
var str=[];
for (var p in obj){
Str.push(encodeURIComponent(p)+’=’+encodeURIComponent(obj[p]));
}
return str.join(“&”);
};
$httpProvider.defaults.headers.post={
‘Content-Type’:’application/x-www-form-urlencoded’
};