在使用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
②后台用对象接收’
@RequestMapping(value="del")
@ResponseBody
public String del(Student student){
return service.del(student);
}
2、传递数组:一个或多个,有下面两种方式。若传递的是数组对象,需要用第二种方式,否则失败。
①前台
$.ajax({
type:'post',
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后,就对了。
②前台
varitemsArray=[];
$.ajax({
type:'post',
contentType:'application/json;charset=UTF-8',//解决415错误
data:JSON.stringify(itemsArray),2000);
}
}
});
后台:
@RequestMapping(value="del")
@ResponseBody
public String del(@RequestBody String[]newArray){
return "";
}
注: 只能传一个数组。