麻烦的会员分润发放


     要做一个查看明细的小dialog显示出每一条汇总记录的明细记录~
     点击table最后一列的a标签,获取同一行的第三列和第四列数据,并传到后台。刚开始用的是a标签的onclick,每次只能取到最后一行的数值,查了一下,JS有闭包的概念。几番曲折,最终还是大神过来指导了下,用jquery绑定点击事件就可以解决。因为是用servelt+jsp的结构,所以只能用ajax传值到servlet,后台根据传过来的月份和推荐人姓名查询到实体类集合。我在纠结怎么把这个实体类集合传回前台,突然好怀念springmvc的controller可以用@ResponseBody注解来返回json对象,很方便,以前没试过用servlet+ajax这种组合。转念一想,这个实体类集合可以转换成json类型再传回前台嘛~然后找了个json-lib这样的jar包,结果加入到maven依赖之后,又用不了,好像还需要好几个jar包,觉得这个太麻烦了,索性就换成alibaba的fastjson,轻便快捷,加入了对应的maven依赖之后,一运行发现报错,NoClassDefFound,我就纳闷呢,怎么编译通过了,一运行就出错了,怀疑是classpath找不到fastjson的jar包,于是去本地仓库看,发现fastjson已经存在了,于是就重新clean install一下。最终用一句代码就将实体类集合转成了json格式的字符串。
    我想着后台返回json格式的字符串,然后设置ajax接收的类型为text类型,然后在success回调方法中接收到字符串,再转化成json对象。发现返回的字符串格式是{a:xx; b:xx ; c:[{d:xx; e:xx ……},{f:xx; g:xx; ……},……],h:xx;……}这样的格式,取值的时候就用如下的方式:
    for (var i in data.c){
        var name = data.c[i].d;
        ……
    }
    然后再进行数据填充到弹出框表格。首先获取table对象,用getElementById("table的id"),可是一直取不到值,这点让我超纳闷,后来查了一下,说有一种原因是找不到页面元素,而非代码写错了(PS:之前以为是html元素写错了,比如少了关闭的tag之类的),一思索,觉得可能是什么东西把我的table给挡住了,以至于找不到它,然后我就在页面再写了个div来验证我的猜想,结果果然可以获取到该div。后来我把包裹table的最外层div最上面和最下面的两行注释删掉之后,就出来效果了,我的天啊!!
    本来一开始我没想到做个查看明细的dialog那么麻烦的,还以为三下五除二就完事了,结果其中的数据转换好繁琐,因为这个功能也不是说必须做好,本来想着算了做不出来不做了,也不是很坚定,某一刻突然充满信心决心一定要做出来就可以做,就是这样啦~
    这次做得算很认真,几乎每个过程都记得清清楚楚,也发觉了自己的很多不足,觉得编程功力太弱,很惭愧。

原文地址:https://www.cnblogs.com/lindaZ/p/5772112.html