页面代码:(绿色背景的代码为关键代码)
<form action="<%=path%>/addPar" id="addpar" method="get">
<div style="margin-left:60px;float:left;margin-right:100px;margin-top:10px">
<input id="date_picker" value="${time}" name="time" type="text" class="input_text" placeholder="采购日期" style="text-align:center;color:#808080">
</div>
<!-- 供应商 -->
<div class="top_div" >
<select id="supplyId" name="supplyId" style="text-align:center;color:#808080;margin-right:60px">
<option value="" >请选择供应商</option>
<c:forEach items="${su}" var="s">
<option value="${s.supplyId}" <c:if test="${s.supplyId==sId}">selected</c:if> >${s.name}</option>
</c:forEach>
</select>
<input type="button" class="querybut" value="确定" style="margin-left:80px" id="adpar">
<%-- <input type="text" value="${Id}" name="Id" id="suId">
<input type="text" value="${time}" name="tim" id="tim">
<input type="text" value="${pId}" name="parchase" id="par"> --%>
</div>
</form>
js: (表单用ajax的post请求提交)
$("#adpar").click(function(){
$.post("addPar",$("#addpar").serialize(),function(data){
$("#cgadd").show();
layer.msg("添加成功",{
time:1000,
icon:1
});
$("#suId").val(data.sId);
$("#tim").val(data.time);
$("#par").val(data.pId);
});
});
后台:
@RequestMapping("/addPar")
public ModelAndView addPar(HttpServletRequest request,HttpSession session,Model model,@ModelAttribute("time") String time,@ModelAttribute("supplyId") String supplyId){
System.out.println("time:"+time+" "+"supplyId: "+supplyId);
String Id=request.getParameter("suId");
//获得供应商信息
List supplier=supplyService.getAll();
Parchase parchase=new Parchase();
//获得采购表 最大id并++
String parchaseId=idUtil.parchaseId(parchaseService.getMaxId());
System.out.println("parchaseId: "+parchaseId);
//获得当前用户 id 即当前默认的采购员
String userId=(String) session.getAttribute("userId");
//设置采购人员
User user=userService.getUserById(userId);
//设置供应商
Supply supply=supplyService.getById(supplyId);
parchase.setDate(time);
parchase.setStatus("处理中");
parchase.setSupplier(supply); //供应商
parchase.setUser(user); //采购人
parchase.setParchaseId(parchaseId);
parchaseService.addParchase(parchase);
model.addAttribute("sId", supplyId);
model.addAttribute("time", time);
model.addAttribute("pId",parchaseId );
model.addAttribute("su", supplier);
model.addAttribute("Id", Id);
View view = new MappingJacksonJsonView();
ModelAndView mav=new ModelAndView(view);
return mav;
}
问题:当页面向后台提交时,form表单的值,毫无疑问全部被提交。当返回页面时,这些值会直接返回到发起 ajax 请求的地方,淡蓝色背景的代码,是把返回值直接赋值给页面元素,这样是是行得通的。但是,表单里的元素直接取得后台返回值(没有经过ajaxd的返回元素 data),这样也是对的,当我在这个表单中添加其他元素(这些元素的值没有被提交到后台)并用同样方法赋值时问题出现了,根本无法赋值;然后我把这些元素的值也提交到后台,再从后台返回,取值,然后就可以得到值了。(红色代码部分时没有提交到后台的元素,可通过,蓝色代码部分 方式复制,也可以把它传到后台,在从页面取值)