1、angular的请求方式(参考《精通AngularJS》)
GET: $http.get(url, config)
POST: $http.post(url, data, config)
PUT: $http.put(url, data, config)
DELETE: $http.delete(url, config)
其中各参数含义如下:
url: 调用目标URL
data:请求体中送出的数据
config: 包含额外配置信息的js对象。
对于config的重要属性有:
method:所用的http方法
url:请求的目标的url
params:url的参数
headers:额外的请求头
transformRequest、transformResponse:在与后端交换数据前或交换数据后,对数据进行处理的函数。
2、$http请求,$.ajax请求
var user = {name: "xiao", age: "21"};
$http.post("http://127.0.0.1:8081/dfsc/saveUser.do",user);
$.ajax({
url:"http://127.0.0.1:8081/dfsc/saveUser.do",
type:"POST",
data:{name:"xiao", age:"20"}
});
3、spring接收参数
后台代码:
$http请求的结果:
$.ajax请求的结果:
为何会出现这种现象呢?下面的链接给出了说明。
http://victorblog.com/2012/12/20/make-angularjs-http-service-behave-like-jquery-ajax/
链接中也给出了讲angular的
http请求向
.ajax靠拢的方法。但是正如文中所言,angular并没有错。
其实只需要回顾angular的请求方式就得出答案:
var user = {name: "xiao", age: "21"};
$http.post("http://127.0.0.1:8081/dfsc/saveUser.do",{},{params:user});
结果:
当然了,正确的处理方式其实是更改java代码
@RequestMapping("saveUser.do")
public void saveUser(@RequestBody User user){
doSomething();
}
public class User{
public String name;
public String age;//此处应该为int类型合适。写程序的时候注意!!!
//set 和 get 方法此处就不写了
}
然而我现在需求比较特殊没必要用User对象。就仅仅需要name和age的变量。
@RequestMapping("saveUser.do")
public void saveUser(@RequestBody String user){
JSONObject json = JSONObject.formObject(user);
String name = json.getString("name");
String age = json.getString("age");
}
最后留一个小疑问:
@RequestMapping("saveUser.do")
public void saveUser(@RequestBody JSONObject json){
String name = json.getString("name");
String age = json.getString("age");
}
这种方式如何实现呢???