1、关于数据库中很多字段插入的内容为‘ ’,原因是:前台非必填项未填时将空字符串作为参数传递给了接口,而接口也并未做判空处理。前台和后台都可以做控制处理,前台可以写一个共同的方法来分别对各个值做判断:
function check(val) {
if (isBlank(val)) {//val!=null&&val!=''
return null;
} else {
return val;
}
}
在每次获取ui中填入的值时可以:
var a = check($('.anyone').val());
2、虽然一般弹窗选择之后的做法是:关闭弹窗,将选择的内容填入原来的html页面。但是通过一个错误的做法又获得了一些思路吧。
错误做法是这样:关闭弹窗之后,重新加载html页面(重新加载html,则会相应调用html中引用的js文件,遇到初始化的方法则会执行),该html页面中有一个select,将select的val赋值后如果select中有一项为此val值,则会默认选中,而问题出现了没有默认选中从弹框中选择的值。
原因:弹出框选择了之后得到一个id,然后根据id做了一个查询,得到要填入的该条信息(走了一个网络请求),然后重新加载了html,该html中的select的下拉列表也是走了一个网络请求,这两个网络请求又都是异步的,无法保证获取select下拉列表值的网络请求先走完。这样可能select值还没有初始化就开始给select赋值来达到默认选中的目的,这样无论如何也不会默认选中。
解决办法:当然是不应该再去加载一遍html了,当然让下拉列表初始化的方法在前面并且改成同步的网络请求也是可以达到这个目的。
以后还会遇到很多关于同步 异步 网络请求的问题,在网络请求成功的方法里面进行console输出,可以看到哪个网络请求先结束的,请求了几次,并且在network中可以看到加载页面时每个页面的加载时间(里面比较占时的就是网络请求的个数、网络请求的次数以及各个网络请求所耗费的时间;如果一个页面时有多个tab页,如果在进页面时进行所有tab页的网络请求第一个页面会比较慢,接下来点击tab页则会减少网络请求的时间;一开始请求,第一次进页面很慢,但是一直在tab页之间点击的话会减少很多次网络请求;如果各个tab页的网络请求都放到相应的tab页点击时进行处理,则在tab页之间点击多次会加长总得请求时间)
3、 关于checkbox:当有一个checkbox的列表并且分页时,这时候就一定要注意,给chekbox的id赋值时一定要用这个chekbox内容对应的唯一标识id,因为each循环中的i加载第二页时又会从零开始,这样chekbox的id就不是唯一的了,点击时就会出现点击这一页的checkbox时会跳到上一页的这个次序的checkbox上。checkbox的id的唯一性。
4、无用的东西千万删掉,轻了就是代码干净,代码量少,重了也许在哪里这个无用的代码(html中或许。。)就悄悄起了坏作用!