首页 > 技术分享 > JavaScript
收藏

JavaScript中高级应用,JS操作Cookie,JavaScript中cookie的路径(path)

07/18 15:20
大潇博客 原创文章,转载请标明出处

本文从初学者层面详细介绍js对cookie的操作。


需求示例:当我们需要在网站中临时保存些字段,这些字段信息可能会在网站中的任何一个页面中都会用到,在当前页面下短暂的保存,我们设置变量就可以,关闭该网页信息也就随之不在了,相反,如果在其它页面也会用到相应信息,那最好的方法既是使用cookie了。

cookie是以键值对的形式保存的,即key=value的格式。


重要:目前在Mac的Safari浏览器中,cookie无法写入中文,经查资料证实,Safari不允许非ASCII编码的值,所以建议每次读写都使用encodeURI和decodeURI进行转码,下文的方法中有应用,可参考


下面贴出js写和读cookie的方法,需要拿走即可

//JS操作cookies方法:写cookies

function setCookie(name,value){

var Days = 30;

var exp = new Date();

exp.setTime(exp.getTime() + Days*24*60*60*1000);

document.cookie = name+"="+encodeURI(value)+";expires="+exp.toGMTString()+";path=/";

}

//JS操作cookies方法:读cookies正则筛选

function getCookie(name){

var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");

var cookie = decodeURI(document.cookie);

if(arr=cookie.match(reg)){

    return unescape(arr[2]);

}else{

    return null;

}

}

//JS操作cookies方法:删cookies,举例

function delCookie(name){

var exp = new Date();

exp.setTime(exp.getTime() - 1);

var cval=getCookie(name);

var cval=' ';

if(cval!=null){

     document.cookie= name + "="+cval+";expires="+exp.toGMTString()+";path=/";

}

}


写cookie方法:name即为存储cookie的名称,value即为cookie存储的值,如果多条信息需要存储,可多次调用该方法,用相应的符号将每次的信息区分开,再用+(JS字符串拼接符号)把之前的信息和将要存储的信息拼接起来,之后再存到cookie中。

读 cookie的方法:读取的时候会将通过存储cookie的键值name将cookie的value读出,再通过该筛选匹配,返回的既是cookie的值,以数组形式存贮的所有键值。


在上面的代码中,有标红的一小段代码 +";path=/" ,这段代码如果查相关资料,可查出N多中说法,在这里我通俗简洁的说明一下,在默认情况下,创建cookie的网页和它同在一目录、在它的下级子目录下的所有网页都可以读取该cookie,但如果其它上级目录中的或者不在同级目录中的网页想要用该cookie,是不被允许的,这时候我们需要定义path来保证同一个网站中的所有页面都能使用这个cookie,而且path的路径要设为在根目录下才可以,上面代码中给出的案例既是在根目录下所有页面可使用,如果不定义path或者path路径不一样,则会造成不同的页面定了不同的cookie,各自操作各自cookie的情况。


删除cookie,有两种方案说明:

第一:把cookie的value值设为空,读取得时候要判断是否为空

第二:给cookie设置终止日期

//获取当前时间

var date=new Date();

//将date设置为过去的时间

date.setTime(date.getTime()-10000);

//将userId这个cookie删除

document.cookie="userId=828; expires="+date.toGMTString(); 

可自行将此段代码封装成方法调用


相关文章:

http://www.cftea.com/c/825.asp

http://www.blogjava.net/jjshcc/archive/2010/06/13/323517.html


js操作cookie介绍到此结束,如有见解或者疑问请在下方留言。


打赏

阅读排行

大家都在搜

博客维护不易,感谢你的肯定
扫码打赏,建议金额1-10元
  • 15601023311