主要区分@RequestBody,@ResponseBody
案例
删除,用get操作
前台
else if(obj.event === 'del'){
layer.confirm('真的删除行么', function(index){
$.ajax({
url:'${pageContext.request.contextPath}/deleteUser.action',
type:'GET',
data:{
id:obj.data.id
},
success:function (msg) {
if(msg=="1"){
layer.msg("删除成功", {icon: 6});
setTimeout(function(){
layer.closeAll();//关闭所有的弹出层
}, 1000);
加载层-风格
}else{
layer.msg("删除失败", {icon: 5});
}
}
})
obj.del();
layer.close(index);
});
}
后台Controller
//删除用户
@ResponseBody
@RequestMapping(value = "deleteUser.action",method = RequestMethod.GET)
public int deleteUser(int id)
{
System.out.println("!!!!!!!!!!!!!!!!!!!!!!!!"+id);
userService.deleteUser(id);
return 1;
}
Post
添加 contentType:“application/json“之后,向后台发送数据的格式必须为json字符串
不添加 contentType:“application/json“的时候可以向后台发送json对象形式
另外,当向后台传递复杂json的时候,同样需要添加 contentType:“application/json“,然后将数据转化为字符串
contentType:'application/json',//告诉后台自己是json字符 data:JSON.stringify(data.field),将数据转换为json
前台
form.on('submit(formDemo)', function(data) {
$.ajax({
url:'${pageContext.request.contextPath}/updateUser.action',
type:'post',
contentType:'application/json',
data:JSON.stringify(data.field),
success:function (msg) {
alert(msg);
if(msg=="1"){
layer.closeAll('loading');
layer.load(2);
layer.msg("修改成功", {icon: 6});
setTimeout(function(){
layer.closeAll();//关闭所有的弹出层
table.reload("test");
}, 1000);
加载层-风格
}else{
layer.msg("修改失败", {icon: 5});
}
}
})
return false;
})
后台
其作用是将方法的返回值以特定的格式写入到response的body区域,进而将数据返回给客户端。当方法上面没有写ResponseBody,底层会将方法的返回值封装为ModelAndView对象。
加上@responsebody后,返回结果直接写入HTTP response body中,不会被解析为跳转路径。比如异步请求,希望响应的结果是json数据,那么加上@responsebody后,就会直接返回json数据
@ResponseBody :
@ResponseBody
@RequestMapping(value = "/updateUser.action",method = RequestMethod.POST )
public int updateUser( @RequestBody User user)
{
System.out.printf(user.toString());
User user1 = userService.UpdateUser(user);
System.out.printf(user1.toString());
return 1;
}