刚开始接触web的时候,只是听老师讲过cookie,脑子里只知道有这个东西,貌似是跟缓存有关,还有个session,但两者的差别却没有具体去了解过,即使看过点资料,也似懂非懂的一概而过。原谅我对技术的态度,如果不用我就不会去碰,除非项目真的要涉及了才会去真正的去了解。我就是这么个人。
理解cookie和session的实质并不是项目需要。是一次和后台人员谈技术的时候聊到了这个话题,我才真正知道原来cookie是存在客户端的,用于暂存数据,可以利用js调用出来使用的,而session是存在服务端的,至于取用好像跟我这前台又不搭边了,我的分工思想是不是又太明显了。
cookie用到的地方很广,尤其登录。这次我开发的登录页面就涉及“下次自动登录”的功能,不用想就知道,userId和password存在cookie中,下次登录时再取出。接下来就是查资料,自己整合方法,实际运用进行测试。
百度 :
设置cookie,也就是往cookie里存数据,每条数据都是名字和值对应的,可以想象成超级全局变量的赋值,当然又有不同,可以用下面的代码给cookie赋值。
document.cookie="userName=lzl";
也可以一次给cookie里放入几个值,用分号和空格隔开"; "。比如:
document.cookie="userName=lzl; userId=123";上面的赋值方式也可以用下面的方法实现:
document.cookie="userName=lzl";
document.cookie="userId=123";
这点跟我们平时的js赋值是有区别的,给cookie赋值的时候,后一个赋值不会覆盖掉前一个赋值,而是添加到cookie里。当然,你可以重复设置一个名对应的值,后一次赋值会覆盖掉前一个。比如我重新设置一个userId,那么后面的设置会覆盖到前面的设置。
我的解决方法:
只需调用cookice.found('userId', $('.userId').val());存入cookie中。利用cookice.Read('userId');方法读取cookie中的userId值。password同理。
1 function Cookice (){} 2 /** 3 * 设置cookie 4 * @param nodeName 5 * @param val 6 */ 7 Cookice.prototype.found = function (nodeName, val){ 8 var exp = new Date(); 9 exp.setTime(exp.getTime()+30*24*3600*1000); 10 document.cookie = nodeName+'='+val+';expires'+'='+exp.toGMTString(); 11 }; 12 13 /** 14 * 读取cookie中数据 15 * @param nodeName 16 */ 17 Cookice.prototype.Read = function(nodeName){ 18 var CookiceStr = document.cookie; 19 if(CookiceStr.length > 0 && CookiceStr.indexOf(nodeName)>-1){ 20 var CookiceArr = CookiceStr.split(';'); 21 for(var i = 0; i < CookiceArr.length; i++){ 22 var Cookicevalu = CookiceArr[i].split('='); 23 if($.trim(Cookicevalu[0])==nodeName){ 24 return Cookicevalu[1]; 25 } 26 } 27 } 28 return ""; 29 }; 30 var cookice = new Cookice();