首先说一下这里涉及的技术和问题
前端用的layui框架,现在问题是有一个iframe,数据是根据后台处理的返回一个html数据,并不是 而是在后台处理了这个html传到前台,并赋值给iframe,这样不存在跨域问题,这个html数据有很多input框,现在就是要在iframe输入数据,并提交到后台.首先解析数据,获得input框的name属性,并没有id属性,然后在前端根据键值对自定义了map数据,存入[key:name,value:输入的值],转为json数据提交到后台并处理.
首先看一下layUI的前台提交数据
form.on('submit(regist-form-submit)', function (data) {
function ObjData(key,value){
this.Key=key;
this.Value=value;
}//定义key value
var array=[];//定义array数组
var vsa= document.getElementById('uploadiframe').contentWindow.document;
var inputs=vsa.getElementsByTagName("input");
for(var i=0; i<inputs.length; i++)
{
var key=inputs[i].name;
var value=inputs[i].value;
var s=new ObjData(key,value); //创建键值对象
array.push(s);//存入到数组中[{key:xx,value:yy},{key:xx,value:yy}]
}
//转换数据
var postData = JSON.stringify(array);
//ajax提交数据
$.ajax({
type:"post",
url:"csContract/register",
data:{
'json':postData,//数据
'toId':csTemplepost.toId,//带数据id
},
success:function(res){
console.log(res);
layer.closeAll();
febs.alert.success('合同登记成功');
}
});
});
提交的json传到后天去处理转化并存到相应的数据库表中
@Log("新增CsContract")
@PostMapping("csContract/register")
@ResponseBody
@RequiresPermissions("register:view")//接受json数据
public Result addCsContract(@RequestParam String json, @RequestParam String toId, CsContract csContract) throws BusException {
try {
JSONArray arr = JSONArray.parseArray(json);
for(int i=0;i<arr.size();i++){
//1、把里面的对象转化为JSONObject
JSONObject job = arr.getJSONObject(i);
// 2、把里面想要的参数一个个用映射的方式获取到
String key=job.getString("Key");
String value=job.getString("Value");
//
}
这个代码不能贴完见谅,