情况:
1. 这个系统和公司的业务没有一点点联系,是某个政府有关单位的需求。
2. 因为老板同意我远程在老家工作(兼顾帮忙带带小孩),有着感谢老板、老板要求就尽力执行的想法,看了看最初的需求(有中间人转达),觉得很简单,7、8天就可以搞定。
3. 该单位对接人发了8张excel/word给我……该对接人文科背景,但思路清晰,描述起需求来简单明了(赞),我知道是要做一个 B/S 结构的在线填表,然后对数据进行一些条件统计(预计300人的用户系统,用户群以40-50岁企业家为主)
4. 好不容易理解完毕里面 100+ 从没见过的术语、理清条目之间的关系后,建了数据表、伪代码(MySQL+ThinkPHP+BootStrap3)
5. 要求“填表页面要和word排版一样”(就是那种非常多复杂表格的),吐血三升。终于用直接拷贝word表格到dreamweaver的设计模式里实现……
6. 中间这个表格变动若干次和扩充功能(这个很正常……)。于是每次调整,就是从 100+ 的input radio checkbox等不断地查找、复制、粘贴、改名……
7. 因为html结构变动太大,没有使用PHP将数据直接填充到html的方式,而是使用ajax的方式加载json格式的用户数据,自动填充到表单元素里 类似 $("input[name='" + json[key] + "']").val(json[value])
8. 写了很多处理“关系”的代码,例如某某 radio 会触发另外若干input失效;
还有就是json的序列化和反序列化。(例如家庭成员可以自己增加到N个,提交后序列化,然后加载到浏览器又反序列化,并根据数量自动创建新的 input 元素)
前后1个半月过去了,终于上线了。但是评价很不好,对接人抱怨说自己都被用户的投诉电话烦死了。
出现很多问题,以及应对:
1. 有人说辛辛苦苦填了一个小时,提交后“提交成功”,再刷新,数据全部不见了。
检查发现:提交后刷新页面,由于网络问题,ajax加载缓慢,input里还是空白的时候,又点了一次提交。 这个在ajax请求里加上了判断解决,只有得到返回数据,才会把表单显示出来。
2. 用了jQuery的ajaxSubmit插件,解决了多个表单依次提交的问题。(因为这个表格大概分4个类别,每个类别下有几十个input),但是无法在他们后面再添加一个ajax请求(第二个会无效),最后通过修改提交函数,为其他的ajax请求设置一个if条件来处理。
3. 在那种可以“自由增加数量”的输入框里,由于低估了用户填写文本的欲望,导致提交到MySQL,被varchar(2000)字段的限制截断了。 最后某个json的值解析的时候报错,导致整个后续的数据处理进程都失败。 后来通过调整json数据解析的顺序和增加容错处理解决。
4. $("input:hidden[name='xxxx']").val(yyyy),会把 radio的value全部改掉(这个隐藏得好深),然后强行把 <input type=hidden /> 改成 <input type=text class=hide />才避免这个问题
总结一下:
1.javascript是一把双刃剑,用不好还是别用了,会砍到自己(比如我这样的渣js技术),直接用PHP+HTML,可以更好地检查到错误
2. 自己以为的“为了用户方便”添加的一些功能特性,其实并没有必要。稳稳当当地实现功能,操作不方便一点都没什么的。
3. 不要乐观估计任何一个小事情所消耗的时间。
4. 以后打死也不干这类事情了。投入时间和产生效益不成正比。
不知大家有木有一些很好的办法来处理这些问题?
1. 大量复杂表单元素的管理(可能有的会需要复制多个),有图形化的么? 直接写html眼花
2. 复杂格式的word表格“变成”web
3. 少写代码且不出错,实现数据自动填充到对应的input里(包括radio、checkbox、textarea)
1. 这个系统和公司的业务没有一点点联系,是某个政府有关单位的需求。
2. 因为老板同意我远程在老家工作(兼顾帮忙带带小孩),有着感谢老板、老板要求就尽力执行的想法,看了看最初的需求(有中间人转达),觉得很简单,7、8天就可以搞定。
3. 该单位对接人发了8张excel/word给我……该对接人文科背景,但思路清晰,描述起需求来简单明了(赞),我知道是要做一个 B/S 结构的在线填表,然后对数据进行一些条件统计(预计300人的用户系统,用户群以40-50岁企业家为主)
4. 好不容易理解完毕里面 100+ 从没见过的术语、理清条目之间的关系后,建了数据表、伪代码(MySQL+ThinkPHP+BootStrap3)
5. 要求“填表页面要和word排版一样”(就是那种非常多复杂表格的),吐血三升。终于用直接拷贝word表格到dreamweaver的设计模式里实现……
6. 中间这个表格变动若干次和扩充功能(这个很正常……)。于是每次调整,就是从 100+ 的input radio checkbox等不断地查找、复制、粘贴、改名……
7. 因为html结构变动太大,没有使用PHP将数据直接填充到html的方式,而是使用ajax的方式加载json格式的用户数据,自动填充到表单元素里 类似 $("input[name='" + json[key] + "']").val(json[value])
8. 写了很多处理“关系”的代码,例如某某 radio 会触发另外若干input失效;
还有就是json的序列化和反序列化。(例如家庭成员可以自己增加到N个,提交后序列化,然后加载到浏览器又反序列化,并根据数量自动创建新的 input 元素)
前后1个半月过去了,终于上线了。但是评价很不好,对接人抱怨说自己都被用户的投诉电话烦死了。
出现很多问题,以及应对:
1. 有人说辛辛苦苦填了一个小时,提交后“提交成功”,再刷新,数据全部不见了。
检查发现:提交后刷新页面,由于网络问题,ajax加载缓慢,input里还是空白的时候,又点了一次提交。 这个在ajax请求里加上了判断解决,只有得到返回数据,才会把表单显示出来。
2. 用了jQuery的ajaxSubmit插件,解决了多个表单依次提交的问题。(因为这个表格大概分4个类别,每个类别下有几十个input),但是无法在他们后面再添加一个ajax请求(第二个会无效),最后通过修改提交函数,为其他的ajax请求设置一个if条件来处理。
3. 在那种可以“自由增加数量”的输入框里,由于低估了用户填写文本的欲望,导致提交到MySQL,被varchar(2000)字段的限制截断了。 最后某个json的值解析的时候报错,导致整个后续的数据处理进程都失败。 后来通过调整json数据解析的顺序和增加容错处理解决。
4. $("input:hidden[name='xxxx']").val(yyyy),会把 radio的value全部改掉(这个隐藏得好深),然后强行把 <input type=hidden /> 改成 <input type=text class=hide />才避免这个问题
总结一下:
1.javascript是一把双刃剑,用不好还是别用了,会砍到自己(比如我这样的渣js技术),直接用PHP+HTML,可以更好地检查到错误
2. 自己以为的“为了用户方便”添加的一些功能特性,其实并没有必要。稳稳当当地实现功能,操作不方便一点都没什么的。
3. 不要乐观估计任何一个小事情所消耗的时间。
4. 以后打死也不干这类事情了。投入时间和产生效益不成正比。
不知大家有木有一些很好的办法来处理这些问题?
1. 大量复杂表单元素的管理(可能有的会需要复制多个),有图形化的么? 直接写html眼花
2. 复杂格式的word表格“变成”web
3. 少写代码且不出错,实现数据自动填充到对应的input里(包括radio、checkbox、textarea)