1js动态拼接表格,2获取表格内属性,并将table表格元素封装成json,3后台将json转成list
2017-08-08 09:22
941 查看
前段时间做一个pdf操作的项目,现在分享一下在jsp中遇到的坑
1.js动态拼接表格
文件上传完毕后读取文件信息,将本次上传的文件信息封装到list中从controller层传过来是map集合
map里面存了一个list和pages
ajax获取导数据后进行拼接
body中
<table class="layui-table" lay-skin="line" > <thead> <tr> <th>文件名</th> <th>页数</th> <th>文件大小</th> <th>文件预览</th> <th>删除</th> </tr> </thead> <tbody id="Info"> </tbody> </table>
js的方法中:
var pageId=$("#pageId"); pageId.load(url, function(data){ var json = eval("(" + data + ")"); var tb=''; for(var i = 0; i< json.list.length; i++){ tb=tb +'<tr><td name=filename>'+json.list[i].filename+'</td>' +'<td name=pages>'+json.list[i].pages +'</td>' +'<td name=filesize>'+json.list[i].filesize +'kb</td>' +'<td name=file><button class="layui-btn layui-btn-primary layui-btn-mini" onclick="openPdf(' +i+ ');">文件预览</button></td>' +'<td name=inputfile hidden="true">'+json.list[i].inputfile+'</td>' +'<td><button class="layui-btn layui-btn-primary layui-btn-small" onclick="del(' +i+ ');"> <i class="layui-icon"></i></button></td></tr>' } //显示table $("#Info").html(tb); //总页数 $("#pageId").html(json.pages); });
PS:刚开始拼接我有出现不显示,原因大致是:
1.没有用 eval去转换data;
2.’和”冒号的问题;
3.接收的值不正确;
效果图:
2获取表格内属性,并将table表格元素封装成json
操作完pdf文件后,我需要把获取表格(table)内文件信息,并封装成json传到后台进行入库操作;
这里的封装json是数组形式,效果>>例:
[{"name":"张三","age":20,"gender":"f"}, {"name":"李四","age":22,"gender":"f"}]
代码如下
var tabLen = document.getElementById("Info"); var json = ""; if(tabLen.rows.length!=0){ json = "["; for (var i = 0; i <tabLen.rows.length; i++) { json += '{"filename":"' + tabLen.rows[i].cells[0].innerHTML + '","pages":' + tabLen.rows[i].cells[1].innerHTML + ',"filesize":"' + tabLen.rows[i].cells[2].innerHTML + '","inputfile":"' + tabLen.rows[i].cells[4].innerHTML + '"},'; } //方法可在字符串中抽取从 start 下标开始的指定数目的字符。 json= json.substr(0, json.length - 1); json=jsonT+"]"; }
PS:这里需要注意的地方:
1.$(“#Info”);可能会失效,推荐用document.getElementById(“Info”);
2.注意下标的问题rows[i].cells[2]代表第一行的第3个元素(下标0开始,这个,不用多说了吧);
3.innerHTML代表标签间的值,千万别写成input的val();
3.后台将json转成list
推荐阿里的转换工具 com.alibaba.fastjson.JSONArray;这是JSONArray的maven:
<!-- json转换解析 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.4</version> </dependency>
后台操作(controller)
//获取前端传过来的json后,直接用下面这个方法,简单粗暴 //注意,json需要转成String类型的字符串 List<实体类> list =JSONArray.parseArray(你的json字符串, 实体类.class);
PS:这里需要注意的是:
1.如果json有错,是会抛异常的,首先,你打断点看一下你的json有没有错
你可以复制你的json,然后去在线JSON校验看一下你的json是否正确
2.如果你json中的name和实体类name对应不上的话,也会报错
3.注意,你传过来的json格式
PS:
1.前端不像后台,稍不留神,就会导致某某事件失效,多用F12看错误,
2.JSONArray很强大,不止只有json转list,大家可以去看看api
3.有问题记得在下方评论哦
相关文章推荐
- 关于从后台获取数据List<User>转化为JSON格式在前台用easyui以表格显示
- 动态创建表格,更新、提交、循环获取表格中各种元素的数据 并转换为JSON,数组的数据格式。
- 前台JS获取后台的Json数据, 动态创建table并填充数据
- 获取table中每一行的值,封装为Json数据传给后台,后台采用SSM框架。
- jQuery1.9为动态添加元素绑定事件以及获取和操作checkbox的选择属性
- jQuery+json实现动态创建复杂表格table的方法
- 动态事创建的a标签上利用jq滑过元素执行事件通过ajax获取后台数据根据鼠标位置展示数据内容,鼠标离开消失
- ASP.NET 的后台代码问题:动态向Table里添加按钮,却提示没有Text属性。
- 遍历对table中input[type='text']的数据封装成json提交到后台处理
- 后台传递Json数据封装在table中
- 模拟json数据动态数据库遍历到table表格里
- Struts2从后台传集合list给下拉菜单,动态获取
- jQuery1.9为动态添加元素绑定事件以及获取和操作checkbox的选择属性
- jQuery获取动态表格中checkbox被选中一行的属性数据
- java后台访问外网接口获取数据并封装成json
- jQuery1.9为动态添加元素绑定事件以及获取和操作checkbox的选择属性11
- 前台序列化传过来的值,后台获取之后封装到map当中,让后在转化成json格式,最后在把json里面的参数里面的某一个值进行分割,最后在存到json格式的数据中去。
- javascript动态生成表格内容并设置属性,获取选中行的值
- js+jquery动态设置/添加/删除/获取元素属性的两种方法集锦对照(动态onclick属性设置+动态title设置)
- 不需要form,获取table所有数据,整合为json数据 传送给后台