20180909 解析JS Cookie的设置,获取和检索
引用: JavaScript Cookie - by runoob.com
Cookie是储存在电脑文本文件中的数据,用于保存访问者的信息,并可以在下次打开页面时引用。
页面在设置/引用访问者信息时,需要在JavaScript中对Cookie进行设置,获取和检索三个函数。
例如当访问者首次访问网页时,网页会对访问者进行检索(访问者数据),无搜索信息时则页面需要访问者进行登录(设置数据),当下次再次登录时页面会自动返回访问者数据。
以下是我个人对使用Cookie保存用户名案例的解读:
1) 检索Cookie
页面在被打开(onload)时调用"检索函数"(checkCookie),如果Cookie中存在访问者信息则调用"获取函数"(getCookie)并返回用户名,没有则调用"设置函数"(setCookie)对用户名进行设置。
<body onload="checkCookie()"> <!--当页面被打开时调用checkCookie()--> <script>
function checkCookie()
{
var user = getCookie("username"); //调用getCookie()中的username,若不为空则返回值(用户名)
if (user!=""){
alert("welcome back " + user);
}
else {
user = prompt("Please enter your name: ",""); //页面弹出“请输入用户名”窗口,填写user的值
if (user!="" && user!=null){ //当输入的用户名不为空值时,将user作为属性调入setCookie()中
setCookie("username",user,30);
}
}
}
</script> </body>
首次登陆会弹出窗口:

2. 设置Cookie
通过定义函数的参数setCookie(cname,cvalue,exdays)将访问者信息的值保存到"Cookie名称","Cookie值"和"Cookie过期时间"中.
在上述检索函数中,让我输入用户名"Akon Wong"后,函数将"username","Akon Wong",30这三个值保存到setCookie(cname,cvalue,exdays)中
function setCookie(cname,cvalue,exdays)
{
var d = new Date();
d.setTime(d.getTime()+(exdays*24*60*60*10000)); //设置时间为当前时间+exdays的毫秒值(在checkCookie中,设置exdays的值为30)
var expires = "expires="+d.toUTCString(); //设置时间为字符串显示 (toGMTString()已作废)
document.cookie = cname+"="+cvalue+";"+expires; //设置cookie的格式,通过checkCookie()后cookie的字符串结果为"username=Akon Wong;'到期日期'"
}
3. 获取Cookie
当下次再打开页面后,页面的checkCookie函数会在getCookie函数中获取到Cookie储存的用户名"Akon Wong",并返回值。
function getCookie(cname)
{
var name = cname + "="; //定义一个值为"username="的变量
var ca = document.cookie.split(';'); //将cookie的字符串数据转变为以逗号分隔的数组
for (var i=0; i<ca.length; i++){ //通过for函数循环cookie的数据,
var c = ca[i].trim();
if (c.indexOf(name)==0){ return c.substring(name.length,c.length); } //当数据中包含关键字"name"时,返回"username="后面的字符(即用户名)
}
return ""; //若数据中没有找到关键字,则返回空值,进入checkCookie的初始值设置
}
再次登录的欢迎词:

完整函数:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Set Cookies</title>
</head>
<body onload="checkCookie()"> <p id="demo"></p> <script>
function setCookie(cname,cvalue,exdays)
{
var d = new Date();
d.setTime(d.getTime()+(exdays*24*60*60*1000)); //set up the due day of cookie
var expires = "expires="+d.toUTCString();
document.cookie = cname+"="+cvalue+"; "+expires;
//the type of cookie: cookieName=value; due day
} function getCookie(cname)
{
var name = cname + "=";
var ca = document.cookie.split(';'); //return 'the "username";username; time'
for (var i=0; i<ca.length; i++){
var c = ca[i].trim();
if (c.indexOf(name)==0){ return c.substring(name.length,c.length); }
}
return "";
} function checkCookie()
{
//run getCookie() to check if the username is exist.
var user = getCookie("username");
if (user!=""){
alert("welcome back " + user);
}
else {
user = prompt("Please enter your name: ","");
//prompt() can return the message that user input
if (user!="" && user!=null){
//run setCookie() to store the messages into cookie.
setCookie("username",user,30);
}
}
}
</script>
</body>
</html>
20180909 解析JS Cookie的设置,获取和检索的更多相关文章
- js中的cookie的设置获取和检查
设置cookiefunction setCookie(cname,cvalue,exdays) { var d = new Date(); d.setTime(d.getTime()+(exdays* ...
- [转]javascript js cookie的存储,获取和删除
本文转自:http://www.jb51.net/article/13240.htm 使用方法: //1.存储Cookie //2.参数说明: 1.参数1:Cookie存储Name,参数2:Cooki ...
- springboot项目:登录 登录aop拦截 使用Redis与cookie 进行设置获取清除操作
登录.登出: 第一步:在pom文件中引入依赖 <dependency> <groupId>org.springframework.boot</groupId> &l ...
- js cookie 页面倒计时
疯了啦 写了一篇没有保存需求:页面倒计时 只从第一次加购开始公共方法cookie的设置 获取function getCookie(c_name){ if (document.cookie.length ...
- 【转】分享前端开发中通过js设置/获取cookie的一组方法
在前端开发中,通常都需要获取并记录用户的某些操作设置,这样可以使用户下一次访问网站时不用进行重复的调整设置同一个功能. js方法的完整代码如下: var cookie = { set:function ...
- JS读写Cookie(设置、读取、删除)
JS读写Cookie(设置.读取.删除) Cookie是客户端存放数据的一种方式,可用来做状态保持. 1.设置Cookie: a.无过期时间:(若不设置过期时间,默认为会话级Cookie,浏览器关闭就 ...
- JS访问或设置cookie的方法+跨域调用方法
无意中从163网站获取的JS访问或设置cookie的方法,Log到日志上以防遗忘 //COOKIE功能检查function fCheckCookie(){ if(!navigator.cooki ...
- 【JavaScript】JS跨域设置和取Cookie
cookie 是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie.你可以使用 JavaScript 来创建和取回 cookie 的值.本文主要JS怎样 ...
- Cookie的属性(cookie的设置、获取和删除)
每个cookie都有四个可选的属性,他们分别控制cookie的生存周期.可见性.安全性等. Cookies最初设计时,是为了CGI编程.但是,我们也可以使用Javascript脚本来操纵cookies ...
随机推荐
- EIGRP-1-EIGRP的基础和演变
值得一提的是,在2013年,Cisco决定开放EIGRP的定义,并将其发布为IETFInternet草案,即RFC的前身:文档名称为draft-savage-eigrp.从此,基本的EIGRP不再是机 ...
- webpack安装及使用
npm run dev 第一次使用的时候用u盘将某些软件带过去. 所以要找到U盘 2.9.x的版本[推荐] 安装:npm install -g vue-cli 检测版本 vue -V/--versio ...
- SpringBoot | 第十六章:web应用开发
前言 前面讲了这么多直接,都没有涉及到前端web和后端交互的部分.因为作者所在公司是采用前后端分离方式进行web项目开发了.所以都是后端提供api接口,前端根据api文档或者服务自行调用的.后台也有读 ...
- JSONP 回调给全局变量赋值失败解决
;//回调结束标志位var 临时全局变量;var 需要接收的全局变量: function getDate(){ flag = 0; //回调 inviteService.getActivityDeta ...
- 冷笑话,idea 按删除键就是undo?
第一反应是keymap被改了,一看 那么,看起来就是alt出问题了 解决方法 在公司换一个键盘或者狂按alt
- 寻找jar包的好方法
好东西分享下: 下载jar包不用愁 http://maven.outofmemory.cn/
- ajax的jquery写法和原生写法
一.ajax的简介 Ajax被认为是(Asynchronous(异步) JavaScript And Xml的缩写).现在,允许浏览器与服务器通信而无须刷新当前页面的技术都被叫做Ajax. 同步是指: ...
- axios拦截器+mockjs
//main.js中 //引入你mock.js文件 require('./mock.js') //封装api请求 //src/axios/api.js import axios from 'axios ...
- Sublime Text3安装SublimeGit插件
之前一直用PhpStorm作为开发工具,但是最近使用的一台电脑上安装的老是卡死,只好用回Sublime Text3. 搜索后打开第一个链接“Sublime Text 3中使用SublimeGit插件” ...
- <Android 基础(二)> BroadcastReceiver
介绍 BroadcastReceiver:广播接收者,很形象,广播发送,类比生活中的广播,有能力听得到的都可以介绍到这个信息,然后在大脑中反映.对应到Android中就是SendBroadcast和o ...