现在的位置: 首页 > 综合 > 正文

JavaScript操作cookie的一个小小失误

2014年01月11日 ⁄ 综合 ⁄ 共 876字 ⁄ 字号 评论关闭

最近在做一个基于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;
		}

后面测试发现该if中的表达式始终为false。

于是我利用alert()函数打印它们的值。

alert(userName + "," + elements[0]);

这里的输出是tester,tester。

很迷惑,难道是电脑傻叉掉了?明明是相等的啊。难道要用 三个等于号(===),或者要用什么方法(例如equals()),结果还是不行。

后面将值打印到html里面(这样就可以用鼠标拖蓝了,在alert框是做不到的)。发现分号后面居然还有一个空格!!!

原来cookie的格式是这样的(为了区分清楚,用下划线替代空格)   user=benson;_age=18;_date=2012;_school=hvd

所以以后遇到这种问题,即明明看起来应该是一样的,结果判断始终为false,这个时候,就要考虑是否是因为有多余的空格原因引起的,毕竟空格是隐形的杀手!

抱歉!评论已关闭.