在使用ajax与springmvc进行传参的过程中发现如下特点,特总结如下:
1、传简单的一个或两个参数
$.ajax({
type:'post',
url:"/del",
data:{id:stuId},
success:function(data){
if(data=="success"){
infoTip("删除成功",2000);
}
}
});
①后台用变量接收
@RequestMapping(value="del")
@ResponseBody
public String del(String id){
return service.del(id);
}
service.del(id)返回的是字符串类型的,因为ajax中没有加参数dataType:'json',所以前台接收的是字符串success
注:data中的id与后台接收的参数的名称必须一致。
②后台用对象接收’
@RequestMapping(value="del")
@ResponseBody
public String del(Student student){
return service.del(student);
}
注:data中的id与后台接收的对象中的属性名称必须一致。
2、传递数组:一个或多个,有下面两种方式。若传递的是数组对象,需要用第二种方式,否则失败。
①前台
$.ajax({
type:'post',
url:"/del",
data:{"newArray":newArray,
"delArray":delArray
},
traditional:true,//这个是最重要的
success:function(data){
if(data=="success"){
infoTip("删除成功",2000);
}
}
});
后台:
@RequestMapping(value="del")
@ResponseBody
public String del(String[] newArray,String[] delArray){
return "";
}
如果不加traditional,通过 观察浏览器中发送的请求,可以发现参数如下:
newArray[]:
delArray[]:
可以看到,参数的名字为newArray[]而不是我们所定义的newArray,也就是说,当传递数组时,会在我们的数组名称后自动加上”[]”,所以后台接不到。
加上traditional后,就对了。
②前台
var itemsArray=[];
$.ajax({
type:'post',
url:"/del",
contentType:'application/json;charset=UTF-8',//解决415错误
data:JSON.stringify(itemsArray),
success:function(data){
if(data=="success"){
infoTip("删除成功",2000);
}
}
});
后台:
@RequestMapping(value="del")
@ResponseBody
public String del(@RequestBody String[] newArray){
return "";
}
注:只能传一个数组。
3、传递对象,使用已有对象
$.ajax({
type:'post',
url:"/del",
contentType:'application/json;charset=UTF-8',//解决415错误
data:JSON.stringify(formObj),//解决400错误
dataType:"json",
success:function(data){
if(data=="success"){
infoTip("删除成功",2000);
}
}
});
后台:
public String del(@RequestBody Report report){
...
}
注意:若接收的对象中Date类型的属性,则前台拼接成的对象日期格式必须为yyyy-mm-dd这种格式,否则会报400错误
4、传递对象,使用JSONObject接收,适用于java后台没有对应实体类时使用
var jsonBack={
"id":id,
"name":name,
"sex":sex
};
$.ajax({
type:'post',
url:"/save",
contentType:'application/json;charset=UTF-8',//解决415错误
data:JSON.stringify(formObj),//解决400错误
dataType:"json",
success:function(data){
if(data=="success"){
infoTip("保存成功",2000);
}
}
});
后台:public String save(@RequestBody JSONObject obj){
Map<String,Object> objMap=(Map<String,Object>)obj;
String id=objMap.get("id");
}