日期:2014-05-16 浏览次数:20273 次
最近在做一个基于SSH的网站。其中有一个登录模块,需要实现记住密码的功能。
就是在输入用户名的时候,如果该用户的密码被记住过,则在输完用户名后(当焦点离开时自动填充密码)
于是马上想到了Cookie技术。
由于需要在页面中显示指定用户保存的密码,因此需要和JavaScript打交道。
查阅了相关资料,发现了JavaScript也支持Cookie。
核心内容是document.cookie
因为cookie存储的是许多键值对(key=value),每个键值对由一个分号隔开。
于是通过split(";")函数将cookie对拆分成键值对数组。再利用split("=")函数将键值对拆分成key和value,再进行业务逻辑。
本来一切都很顺利的。结果执行到这一步时,被堵了很久。
这里userName为用户输入的用户名
elements[0]为cookie中所有键值对的key值。
elements[1]为cookie中所有键值对的value值。
这里的业务逻辑为:
if(userName == elements[0]) { document.getElementsById("password").value = elements[1]; break; }
于是我利用alert()函数打印它们的值。
alert(userName + "," + elements[0]);
很迷惑,难道是电脑傻叉掉了?明明是相等的啊。难道要用 三个等于号(===),或者要用什么方法(例如equals()),结果还是不行。
后面将值打印到html里面(这样就可以用鼠标拖蓝了,在alert框是做不到的)。发现分号后面居然还有一个空格!!!
原来cookie的格式是这样的(为了区分清楚,用下划线替代空格) user=benson;_age=18;_date=2012;_school=hvd
所以以后遇到这种问题,即明明看起来应该是一样的,结果判断始终为false,这个时候,就要考虑是否是因为有多余的空格原因引起的,毕竟空格是隐形的杀手!