具体效果
在表单中包含了老人信息,以及紧急联系的信息。我想同时提交。紧急联系人可以是多条数据。
具体实现
JS 中的具体代码
var tableData=table.cache.contactTable;//layui table的信息
var datas={};
datas["elder"]=data.field;//获取老人表单信息
datas["contact"]=JSON.stringify(tableData);
$.ajax({
url:'/elder/update',
method:'post',
data:JSON.stringify(datas), //转为jSON字符串
contentType: "application/json",
traditional: true,
dataType: 'json',
success:function(da){
layer.msg(da.msg);
setTimeout(function () {
var index = parent.layer.getFrameIndex(window.name);
parent.layer.close(index);
}, 1000);
},
error:function (data) {
}
}) ;
return false;
});
Controller 中的实现
后端获取Json字符串,通过fastJson来选取出需要的数据。
@PostMapping("/update")
@ResponseBody
public JSONResult add(@RequestBody String datas) {
//将string转为json对象
JSONObject jsonObject=JSONObject.parseObject(datas);
//获取elder的数值
JSONObject elderJson= jsonObject.getJSONObject("elder");
//转为实体
Elder elder=JSON.parseObject(elderJson.toJSONString(), Elder.class);
//获取contact 数组
JSONArray contactjson= jsonObject.getJSONArray("contact");
//转为list
List<Contact> list = JSON.parseObject(contactjson.toJSONString(), new TypeReference<List<Contact>>(){});
JSONResult JsonResult=null;
if(elder.getElderid()!=null)
{
JsonResult=elderService.update(elder,list);
}
else {
JsonResult=elderService.add(elder, list);
}
return JsonResult;
}