JS中cookie的使用

来源:互联网 发布:上海对外经贸大学知乎 编辑:程序博客网 时间:2024/06/05 17:31

设置cookie

每个cookie都是一对值,例如这样:document.cookie=”user=391″;

如果cookie中包含多个值,则需要使用“;”隔开,例如这样:document.cookie=”user=391; set=11″;

需要注意的是 cookie的名称或值不能使用分号(;),逗号(,),等号(=)以及空格符。但是多数情况下我们储存的值是不确定的,那我们如何储存这些值呢?

解决办法是使用escape()函数进行编码,它能将特殊符号使用十六进制表示;例如空格字符将会编码为“%20”,从而可以存储于cookie值中。使用此种方案还可以避免中文乱码的出现。

escape函数使用示例:

document.cookie="json="+escape("My name is philip");

被编译为十六进制的值会转变为如下形态:

My%20name%20is%20philip

通过escape函数编译过的cookie值,如果在取值的时候需要使用unescape函数进行解码才能得到原来的cookie值

获取cookie值

cookie的值可以使用document.cookie直接获得:var strCookie=document.cookie; 这将获得这些名/值对包括了该域名下的所有cookie。例如:

 "user=JS; sex=200; love=yongxing22; bdshare_firstime=1470536077053";

上面的实例中,一次只能获取所有的cookie值,无法通过指定cookie名称获得对应的值,其实这也是处理cookie比较麻烦的地方。我们需要分析字符串来获取我们需要的cookie值,例如:

function getCookie(c_name){if (document.cookie.length>0)  {//检索cookie名初始出现的位置 indexof  c_start=document.cookie.indexOf(c_name + "=")  if (c_start!=-1) //不等于-1则有    { //计算cookie名在 这个cookie的开始和结束位置    c_start=c_start + c_name.length+1     c_end=document.cookie.indexOf(";",c_start)    if (c_end==-1) c_end=document.cookie.length    return unescape(document.cookie.substring(c_start,c_end))    }   }return ""}

通过这种方法,就可以获得单个的cookie值;而且使用类似的方法可以获得多个cookie值,主要就是通过调用输出数组,获取不同的cookie值。

给cookie设置过期时间

到目前为止,所有的cookie都是单会话cookie,即浏览器关闭后这些cookie将会丢失,事实上这些cookie仅仅是存储在内存中,而没有建立相应的硬盘文件。

在实际开发中,cookie常常需要长期保存,例如保存用户登录的状态。这可以用下面的选项来实现:

document.cookie="user=828; expiress=GMT_String"; 

其中GMT_String是以GMT格式表示的时间字符串,这条语句就是将user这个cookie设置为GMT_String表示的过期时间,超过这个时间,cookie将消失,不可访问。例如:如果要将cookie设置为10天后过期,可以这样实现:

 

删除cookie 
如果需要删除cookie的话,直接将过期时间设置成一个已经过去的日期即可。例如:

 

简单的javascript设置cookie的方法就介绍到这里,通过上面的方法,我们已经可以满足基本的cookie应用和需求了。
关于更复杂的cookie设置方法,以后会在博文里另行说明。



1 0
原创粉丝点击