2016年1月13日实习日志

刚刚做完一个用户留言的功能,收获还是不小的,从画界面开始到结束,用了大概四天的时间。
首先来看一下它的样子吧:还有一部分权限的界面就不展示了。

其中学到的最有用的一点应该就是多条件查询的处理方法了。
从图中可以看出来,我们需要根据 时间,状态,模块,站点…来查询符合条件的数据。按我们之前的思路来考虑,查询应该通过get方式传递数据。而get会显示在url上,这样如果单条件或是少数条件的话,是可以接受的,但是如果查询条件太多的话,会导致url特别长,虽然服务器并没有对url的长度做限制,可是最起码不太美观。
于是我就想了另外一种方式来做查询,就是把查询的条件做成一个form表单,然后提交表单,后台接受post数据然后查询出相应的信息。
这样的话,查询信息就不会显示在url中,而且可以将查询信息隐藏起来,看上去很完美。perfact!
然而还是欠考虑了,毕竟前辈们把查询条件get在url上是有原因的,因为我继续往下做就遇到了一个无法避免的问题。就是我通过查询出来了部分数据,然后我对这些数据进行修改(添加或删除),修改完之后(修改用的是ajax方式),要动态展现出来,于是我就在修改完之后加了一个动态刷新页面,然后问题就来了,我刷新之后的页面并不是查询之后的信息。而是最初始的列表页,也就是说,我之前post的查询条件在刷新之后就没有了。于是我开始方了。
然后我开始想,有没有可能在刷新页面的时候重新post之前post过的信息呢,网上查了好多,也考虑了一下,并没有找到很好的解决方法,于是,我好方。
后来经大神指点找到了一个折中的方法来解决这个问题:
1、先post查询条件到一个方法中。
2、在这个方法中把相关的查询条件拼成一个字符串形式。
3、然后带着这个字符串(url后缀形式),访问列表页面。
4、在列表页面方法中把这个字符串再拆分成数组。
5、根据这个数组查询出相关数据。传递给前台

这样用了一个中间层,虽然有些麻烦但是很好的解决了这个问题,后来在做分页查询的时候更是省了不少的事,后来大神把中间的这些操作写进一个类里,具体就是 string -> array (正则匹配) array -> string (字符串拆分)。最开始看到这个类的时候觉得何必多此一举呢,现在想想,自己真的是太年轻了。

另:最近一直在看关于数据传输的东西,主要就是post 和 get ,从名字上分析,post是传输数据,而get是得到数据,http协议的制定者的初衷就是希望我们在需要获取数据的时候用get方法,需要改变数据状态的时候(例如增删改)的时候,采用post方法。只是框架的发展使得程序员对于post和get并没有从根本上认识到区别,以导致post和get混用。其实这是不知道提倡和传播的。

如果有时间的话,希望可以塌下心来仔细研究一下这些最基本的网络协议。
有时候我们做的太多,却总是忘了我们为什么要去做。

还有一下小问题,就是一些小的js的操作,写进github里了,以作留念。
https://github.com/xuao/lucifar

你可能感兴趣的:(工作日志)