2015年创业中遇到的技术问题:51-60

51.FastJSON序列化。
fastjson 转换内嵌json对象Object{"$ref":"$.rows[1].xxxx"}怎么在前台解析。

原来的方法:
JSONObject jsonObject;
jsonObject.toJSONString();

现在的方法:
JSON.toJSONString(o,SerializerFeature.DisableCircularReferenceDetect);


52.安全问题。
程序漏洞,查询多余的信息。

正确的写法:select * from loan_comment where lid =#{lid}
可能错误的写法:而不是 select * from loan_comment where 1=1
<if lid != null>
  and lid = #{lid}
</if>(这种写法,不适合从外界传入lid,因为lid可能没有传入,从而导致可以查询出所有的评论。
这种写法,适合后台程序,一定传入lid的情况)

类似的还有,查询用户等信息JSON请求,只需要查询必要的字段信息。用户密码,是绝对不能通过JSON看到的。

53.jquery官方推荐用on绑定事件
上次,做前端的同事看了我的代码,用的是bind方法,他建议用on。
刚刚,又看了bind,就百度了on和bind了区别,发现官方是推荐用on的。
jquery1.7推荐。

54.ArtDialog对话框用法。
先调用close,再调用remove才彻底关闭了对话框。
d.close().remove();

55.妈个蛋啊,巨大的失误。
a页面,include包含了b页面。
a和b都引入了相同的js文件。
怪不得,每次弹出对话框,得“点击两次关闭”才行。
自己把自己坑了,在通过浏览器查看源码的时候,发现了这个严重的问题。

56.同样的问题,又纠结了几分钟。
给超链接a绑定事件,
<a href="javascript:;" onclick="remove()">remove</a>
remove貌似是JS中的保留字。

57.jquery获得checkbox是否选中。
JS推荐方式:
//var test = document.getElementById("usescore").checked;
     
Jquery推荐方式:console.log($("#usescore").is(":checked"));

还有个奇葩的问题,checkbox选中之后,通过chrome查看元素,没有及时生成checked属性。


58.JS和CSS版本与缓存。
JS带上版本号。
Freemarker定义变量version=20130323
JS定义 fupage.js?version=${20130323}

59.JS逻辑bug。
this.isTable = options.isTable || true;// 默认是table
本意:如果isTable没有配置,默认为true。
结果,isTable手动配置为false,仍然为true。

修改为:
// 默认是table
if( options.isTable==undefined){
this.isTable = true;
}else{
this.isTable = options.isTable;
}

60.fupage增加加载错误提示功能。
之前的fupage如果,服务器出错,或者网络异常,会一致提示“玩命加载中的动画效果”。
现在改了,如果加载成功,renderOk为true。
否则,5秒后,提示“服务器繁忙,请稍后再试”。
setTimeout(function() {
if (!renderOk) {
busyTip(that.bodyHolder, that.isTable);
}
}, 5000);

妈蛋,又发现1个问题。
if (isTable) {
// 偷懒,一般表格不会超过20列,设置为20,横跨所有列
loadingDiv = "<tr style='text-align:center;'><td colspan=20>";
} else {
loadingDiv = "<div style='text-align:center;' >"
}
无论是普通的表格,还是DIV,记得加上“style='text-align:center;'”,保证动画效果居中显示,看着舒服。
原文地址:https://www.cnblogs.com/qitian1/p/6462811.html