JS设置cookie、读取cookie、删除cookie


Posted in Javascript onApril 17, 2015

JavaScript是运行在客户端的脚本,因此一般是不能够设置Session的,因为Session是运行在服务器端的。

而cookie是运行在客户端的,所以可以用JS来设置cookie.

假设有这样一种情况,在某个用例流程中,由A页面跳至B页面,若在A页面中采用JS用变量temp保存了某一变量的值,在B页面的时候,同样需要使用JS来引用temp的变量值,对于JS中的全局变量或者静态变量的生命周期是有限的,当发生页面跳转或者页面关闭的时候,这些变量的值会重新载入,即没有达到保存的效果。解决这个问题的最好的方案是采用cookie来保存该变量的值,那么如何来设置和读取cookie呢?

首先需要稍微了解一下cookie的结构,简单地说:cookie是以键值对的形式保存的,即key=value的格式。各个cookie之间一般是以“;”分隔。

JS设置cookie:

假设在A页面中要保存变量username的值("jack")到cookie中,key值为name,则相应的JS代码为:

document.cookie="name="+username;

JS读取cookie:

假设cookie中存储的内容为:name=jack;password=123

则在B页面中获取变量username的值的JS代码如下:

var username=document.cookie.split(";")[0].split("=")[1];
//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 + "="+ escape (value) + ";expires=" + exp.toGMTString();
}

读取cookies

function getCookie(name)
{
var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");
if(arr=document.cookie.match(reg))
return unescape(arr[2]);
else
return null;
}

删除cookies

function delCookie(name)
{
var exp = new Date();
exp.setTime(exp.getTime() - 1);
var cval=getCookie(name);
if(cval!=null)
document.cookie= name + "="+cval+";expires="+exp.toGMTString();
}
//使用示例
setCookie("name","hayden");
alert(getCookie("name"));
//如果需要设定自定义过期时间
//那么把上面的setCookie 函数换成下面两个函数就ok;
//程序代码
function setCookie(name,value,time)
{
var strsec = getsec(time);
var exp = new Date();
exp.setTime(exp.getTime() + strsec*1);
document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}
function getsec(str)
{
alert(str);
var str1=str.substring(1,str.length)*1;
var str2=str.substring(0,1);
if (str2=="s")
{
return str1*1000;
}
else if (str2=="h")
{
return str1*60*60*1000;
}
else if (str2=="d")
{
return str1*24*60*60*1000;
}
}
//这是有设定过期时间的使用示例:
//s20是代表20秒
//h是指小时,如12小时则是:h12
//d是天数,30天则:d30
setCookie("name","hayden","s20");

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
如何实现浏览器上的右键菜单
Jul 10 Javascript
jquery.validate.js插件使用经验记录
Jul 02 Javascript
jQuery实现非常实用漂亮的select下拉菜单选择效果
Nov 06 Javascript
AngularJS 指令的交互详解及实例代码
Sep 14 Javascript
常用原生js自定义函数总结
Nov 20 Javascript
JavaScript两个变量交换值的实现方法
Mar 01 Javascript
AngularJS  ng-repeat遍历输出的用法
Jun 19 Javascript
小程序实现抽奖动画
Apr 16 Javascript
nuxt框架中对vuex进行模块化设置的实现方法
Sep 06 Javascript
vue实现路由监听和参数监听
Oct 29 Javascript
JS错误处理与调试操作实例分析
Apr 13 Javascript
JS中队列和双端队列实现及应用详解
Sep 29 Javascript
js获取当前日期时间及其它操作汇总
Apr 17 #Javascript
JS中完美兼容各大浏览器的scrolltop方法
Apr 17 #Javascript
jQuery检测输入的字符串包含的中英文的数量
Apr 17 #Javascript
JS获取图片高度宽度的方法分享
Apr 17 #Javascript
JS替换字符串中空格方法
Apr 17 #Javascript
最简单的JavaScript验证整数、小数、实数、有效位小数正则表达式
Apr 17 #Javascript
jQuery实现自定义事件的方法
Apr 17 #Javascript
You might like
php Ajax乱码
2008/04/09 PHP
PHP5.2中date()函数显示时间与北京时间相差8小时的解决办法
2009/05/28 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
2019/12/18 PHP
JQuery中的ready函数冲突的解决方法
2010/05/17 Javascript
javascript使用call调用微信API
2014/12/15 Javascript
jQuery中nextUntil()方法用法实例
2015/01/07 Javascript
Jquery Easyui对话框组件Dialog使用详解(14)
2016/12/19 Javascript
使用DeviceOne实现微信小程序功能
2016/12/29 Javascript
jQuery鼠标悬停内容动画切换效果
2017/04/27 jQuery
nginx+vue.js实现前后端分离的示例代码
2018/02/12 Javascript
微信小程序websocket实现聊天功能
2020/03/30 Javascript
[01:13:08]2018DOTA2亚洲邀请赛4.6 淘汰赛 mineski vs LGD 第二场
2018/04/10 DOTA
python操作xml文件详细介绍
2014/06/09 Python
在pycharm中设置显示行数的方法
2019/01/16 Python
python实现可变变量名方法详解
2019/07/01 Python
Python字符串处理的8招秘籍(小结)
2019/08/13 Python
利用Python复制文件的9种方法总结
2019/09/02 Python
Python手绘可视化工具cutecharts使用实例
2019/12/05 Python
Tensorflow Summary用法学习笔记
2020/01/10 Python
Python底层封装实现方法详解
2020/01/22 Python
Python Dict找出value大于某值或key大于某值的所有项方式
2020/06/05 Python
python+selenium爬取微博热搜存入Mysql的实现方法
2021/01/27 Python
HTML5实现WebSocket协议原理浅析
2014/07/07 HTML / CSS
Smashbox官网:美国知名彩妆品牌
2017/01/05 全球购物
JSP和EJB可以共享HttpSession么?EJB里面可以改变session里面的内容
2013/06/05 面试题
幼儿园义卖活动方案
2014/01/17 职场文书
三年级学生评语
2014/04/23 职场文书
爱国演讲稿500字
2014/05/04 职场文书
意向协议书
2015/01/27 职场文书
本溪关门山导游词
2015/02/09 职场文书
办公室主任个人总结
2015/02/28 职场文书
单位更名证明
2015/06/18 职场文书
一年级下册数学教学反思
2016/02/16 职场文书
公司会议开幕词
2016/03/03 职场文书
C3 线性化算法与 MRO之Python中的多继承
2021/10/05 Python
windows server 2012安装FTP并配置被动模式指定开放端口
2022/06/10 Servers