JS存取Cookies值,附自己写的获取cookies的一个方法
参考:脚本之家
这里对cookie进行了说明,也介绍了几个方法,但是我要取我存的cookie时取不到,他的方法只是针对存的 名字-值,不涉及键,所以自己写了个方法,来满足我的需求。
封装了简单存取Cookie:
//写Cookie
function addCookie(objName, objValue, objHours) {
var str = objName + "=" + escape(objValue); //编码
if (objHours > ) {//为0时不设定过期时间,浏览器关闭时cookie自动消失
var date = new Date();
var ms = objHours * * ;
date.setTime(date.getTime() + ms);
str += "; expires=" + date.toGMTString();
}
document.cookie = str;
} //读Cookie
function getCookie(objName) {//获取指定名称的cookie的值
var arrStr = document.cookie.split("; ");
for (var i = ; i < arrStr.length; i++) {
var temp = arrStr[i].split("=");
if (temp[] == objName) return unescape(temp[]); //解码
}
return "";
}
①你首先的了解Cookie的两种存法 查看 这篇文章下面的一点的位子有介绍
js存cookie:
//存cookie
document.cookie = "xxx=456"; //不带子键
document.cookie = "haha=hello=123&word=456"; //带子键
这个太简单了。
我们获取Cookie
var cookies = document.cookie.split(";");
$.each(cookies, function (i, item) {
console.log(item);
})
很明显,最后两行是账号和密码的cookie值。是不是不好处理。为了做测试,然后我又加了两个cookie
HttpCookie hcName = new HttpCookie("testName");
hcName.Value = "测试名字";
hcName.Expires = DateTime.Now.AddDays();
Response.Cookies.Add(hcName); HttpCookie hcPwd = new HttpCookie("testPwd");
hcPwd["sonKey"] = "测试密码";
// hcPwd.Values["sonKey"] = 测试密码; 上下两种都可以
hcPwd.Expires = DateTime.Now.AddDays();
Response.Cookies.Add(hcPwd);
那么,我们现在网页中存在的cookie的类型有: 名称=值,名称=键=值,名称=键=值&键1=值1&键2=键3,基本情况都包含了。然后自己写了一个方法,可能比较繁琐,用的时候调用方法传递参数就可以了,返回的就是 值。
/* 参数说明
...rest表示可空参数
第一个参数是存的cookie名称
第二个参数是第一个参数名称下的子键
有子键就写,没有就不写
*/
function getCookie(name, ...rest) {
var dd;
var cookies = document.cookie.split(";"); //cookie的类型有很多,你要确定你需要获取什么
$.each(cookies, function (i, item) {
item = item.trim();//先把空格去了
if (item.indexOf(name) > -) {
//你先的理解cookie这个位子才好理解 cookie可以有子键,也可以没有子键
//①格式: 名字=值
if (rest.length === ) {
var names = item.split("=")
//console.log(`名字;${names[0]},值:${names[1]}`);
dd = names[];
}
else {
//②格式:名字=子键=值&子键1=值1&子键2=值2
//这种的麻烦在于它的子键可以有很多
var arry = item.split("&"); //取到所有的子键和值,注意:此集合的第一项,多了个名字
if (arry.length > ) {
$.each(arry, function (a, b) {
if (b.indexOf(rest[]) > -) {
var names = b.split("=");
if (names[] == name) { //判断是否带cookie的名字
// console.log(`名字:${name},子键:${names[1]},值:${names[2]}`);
dd = names[];
} else {
console.log(`名字:${name},子键:${names[0]},值:${names[1]}`);
dd = names[];
}
}
});
} else {
var arry1 = arry[].split("=");
console.log(`名字:${name},子键:${arry1[1]},值:${arry1[2]}`);
dd = arry1[];
}
}
}
});
return dd;
};
我们做测试:
$(function () {
var a=getCookie("testName");
var b = getCookie("testPwd", "sonKey");
var c = getCookie("UserName", "WarehouseManagement");
var d = getCookie("UserPwd", "WarehousePhoneWeb");
var e = getCookie("UserName", "WarehousePhoneWeb");
var f = getCookie("testName11");//没有就返回空
alert(`a:${a},b:${b},c;${c},d:${d},e:${e},f:${f}`);
});
数据都可以取到。
JS存取Cookies值,附自己写的获取cookies的一个方法的更多相关文章
- JS存取Cookie值
一:存Cookie //存Cookie document.cookie = "id=" + escape(value); 二:取Cookie //提取Cookie值 functio ...
- 表单提交textarea内容,第一次获取不到值,第二次才能获取到的解决方法:
因为KindEditor的可视化操作在新创建的iframe上执行,代码模式下的textarea框也是新创建的,所以最后提交前需要执行 sync() 将HTML数据设置到原来的textarea. Kin ...
- 编程写一个方法时,注意方法中传参数的数量最好不要超过5个,超过5个怎么办?可以用struct或class,或一个字典类
图 1 一.从图1发现了什么问题呢? 答案:1.参数传的的太多了:2.另外注释也没写好. 说明:一个方法中,传参数的数量最好不要超过5个. 应该采用:struct或class,或一个字典类都行.其中 ...
- js 获取地址栏最后一个文件名称
var JsRequest={ //这就是一个静态类,类里面有2个静态方法 //方法一:获取url的文件名 例如 index.html getUrlname:function(url){ //假如传进 ...
- 强制获取序列下一个值/当前值(oracle函数)
原文链接--http://blog.csdn.net/qq525099302/article/details/47146393 为什么要使用函数来获取序列值请看这里 -- 创建获取序列下一个值的函数 ...
- JS存取Cookies值
这里对cookie进行了说明,也介绍了几个方法,但是我要取我存的cookie时取不到,他的方法只是针对存的 名字-值,不涉及键,所以自己写了个方法,来满足我的需求. 封装了简单存取Cookie: / ...
- WebView使用详解(一)——Native与JS相互调用(附JadX反编译)
念念不忘,必有回响,永远坚持你所坚持的! 一直在用WebView,还没有系统的总结过它的用法,下面就系统的总结下,分享给大家 一.基本用法 1.加载在线URL void loadUrl(String ...
- Data层相关问题 & JS循环取值
第一次写博客,里面是自己工作中碰到的问题及总结的知识点,便于自己以后回顾,技术大牛们请直接忽略这篇文章,也希望能帮助到想我这样的小白! Data层相关问题总结: 1. 代码管理用的是 VSS 2005 ...
- Js基础知识5-函数返回值、函数参数、函数属性、函数方法
函数返回值 所有函数都有返回值,没有return语句时,默认返回内容为undefined,和其他面向对象的编程语言一样,return语句不会阻止finally子句的执行. function testF ...
随机推荐
- 开源框架GreenDao的操作
1.为什么需要GreenDao?Google原生API不方便 @1手动组拼SQL语句 @2需要自己写操作数据库代码 @3不能把数据库中的数据映射成对象 @4没有实现关联查询 2.GreenDao是什么 ...
- 查询sql表列名
--查询sql 查询表列名Select Name FROM SysColumns Where id=Object_Id('Tab') --查询sql数据库表列名称select name from sy ...
- 中奖概率算法(php 可用于刮刮卡,大转盘等抽奖算法)
<?php //中奖概率算法(php 可用于刮刮卡,大转盘等抽奖算法) /* * 经典的概率算法, * $proArr是一个预先设置的数组, * 假设数组为:array(100,200,300, ...
- Lambda(Linq)
在谈到lambda表达式之前,首先要说一下委托,在下一章会详细介绍委托,在这里就是简单说明一下. 委托的关键字段delegate,声明委托 public delegate void NoReturnN ...
- Example017简单的下拉框
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- workday3~4
这两天算是把一个模块的功能做完了,功能是数据统计,即按输入的时间统计X小时各个服务器status的数量以及各个服务器的信息,学到了不少东西,为了避免忘记,先记录,有空再整理一下. 1.时间戳的问题 选 ...
- SVN仓库迁移到Git遇到的两个问题和解决办法
OS: CentOS 7.0 准备: git svn git-svn sudo yum install git sudo yum install subversion sudo yum install ...
- 修改system 密码
运行cmd命令行 录入 sqlplus /nolog 无用户名登录 conn /as sysdba 连接到数据本地数据 alter user system identified by passwo ...
- PHP源码阅读strtr
strtr 转换字符串中特定的字符,但是这个函数使用的方式多种. echo strtr('hello world', 'hw', 'ab'); // 第一种 aello borld echo strt ...
- voa 2015 / 4 / 19
potentially – adv. capable of becoming real, a possibility tackle – v. to deal with a difficult pr ...