JS中cookie的使用

设置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设置方法,以后会在博文里另行说明。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值