前台:
<!-- 添加新用户 -->
<div id="addiv" style="display:none">
<form >
<p>
<label style="margin-left:80px;margin-top:20px">编号</label>
<input id="aid" type="text" class="in_text" name="userId" >
</p>
<p>
<label style="margin-left:80px;margin-top:20px">密码</label>
<input id="pwd" type="text" class="in_text" name="password" >
</p>
<p>
<label >姓名</label>
<input id="aname" type="text" class="in_text" name="name">
</p>
<p>
<label >性别</label>
<input id="asex" type="text" class="in_text" name="sex">
</p>
<p>
<label >职务</label>
<select id="aposition" style="margin-left:20px;text-align:center" name="positionId">
<option value=""></option>
<option value="01">管理员</option>
<option value="02">业务员</option>
</select>
</p>
//增加
$("#uadd").click(function(){
layer.open({
offset: ['100px'],
skin: 'layui-layer-lan',
shade: [0.4, '#393D49'],
type: 1,
title:"添加新用户",
area: ['500px', '350px'],
content: $("#addiv") //这里content是一个普通的String
});
});
//提交添加
$("#add").click(function(){
var id=$("#aid").val();
var name=$("#aname").val();
var pwd=$("#pwd").val();
var sex=$("#asex").val();
var position=$("#aposition").val();
var privilage=$("#aprivilage").val();
$.post("add",{"id":id,"pwd":pwd,"sex":sex,"name":name,"position":position,"privilage":privilage},function(data){
alert(data.result)
if(data.result=="SUCCESS"){
layer.msg("添加成功");
window.location.href="xtgl/userControl";
}else{
layer.msg("添加失败",{
time: 1000,
});
}
});
});
后台:
//添加新用户
@RequestMapping( value="/add",method = RequestMethod.POST)
public ModelAndView add(
@ModelAttribute("id") String id,
@ModelAttribute("name") String name,
@ModelAttribute("sex") String sex,
@ModelAttribute("pwd") String password,
@ModelAttribute("position") String positionId,
@ModelAttribute("privilage") String privilageId){
Position position=positionService.getById(positionId);
Privilage privilage=privilageService.getById(privilageId);
User user=new User(id,name,password,sex,position,privilage);
userService.save(user);
View view=new MappingJacksonJsonView();
ModelAndView mav=new ModelAndView(view);
mav.setViewName("xtgl/userControl");
mav.addObject("result", "SUCCESS");
System.out.println("mav添加: "+mav);
return mav;
}
在页面上点击添加的时候,会弹出一个框,这个框就是本页面上的一个 div ,说到底他们是一个页面。 向后发起请求时,也能返回来,但是 model里面的值时而得到,时而得不到。这个梗就出现在 红色背景那行代码,当有这行代码时,就得不到返回值,如果没有,就可以得到,实在搞不懂。
总结,因为ajax是局部刷新,所以,,在向后台发起请求时,应该默认返回发起请求的地方,而不是指定返回整个页面吧.如果是整个页面发起的请求,那么返回的应该是发起请求的页面,如果在后台指定了返回的视图,即使是局部请求,也会返回整个页面,然后就接收不到model里面的值。springmvc 默认返回的试图,就是发起请求的视图,ajax不同的是,会直接返回到当前视图ajax请求开始的地方,比如,一个function。还有很重要的一点: View view=new MappingJacksonJsonView(); 这行代码很重要,他起到返回默认视图的作用,如果不写,怎不能返回。