传统的使用jQuery的AJAX请求,最近做登录用AngularJs请求时遇到一点点问题,写下来,给同样遇到坑的人立个flag。正文开始:
一、jQuery版本的请求:
$.ajax({
type: “post”,
url: “请求路径”,
data: {loginName:”刘十一”,password:123456},
dataType: “json”,
success: function(data){
});
});
二、Angular版本的请求:
angular.module("app",[])
.controller("loginCtrl",["$scope","$http",function ($scope,$http) {
$scope.login = function () {
var data = {"loginName":$scope.phone,"password":$scope.psw};
var url = 'http://localhost:8181/' + 'users/login';
var postCfg = {
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
transformRequest: function (data) {
return $.param(data);
}
};
$http.post(url,data,postCfg).then(function (res) {
}).catch(function (res) {
});
}
}])
这里要注意的是Angular的请求格式默认是json,所以要在headers里面声明Content-
Type的请求格式,而transformRequest则是将数据序列化的,有些博客对于请求后的处理
结果使用的是success()和error()。但是这种方法在Angular新的版本中已经取消这种形
式,对应的用then()和catch()来代替,这些都是只是方法而已。
在这个案例中我收获最大的是Angular和jQuery默认请求的方式不同,而后台的接收方式不同,才导致前端传入的参数后台无法接收,了解了这点,就可以做出相应的改进