参考:脚本之家

这里对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的一个方法的更多相关文章

  1. JS存取Cookie值

    一:存Cookie //存Cookie document.cookie = "id=" + escape(value); 二:取Cookie //提取Cookie值 functio ...

  2. 表单提交textarea内容,第一次获取不到值,第二次才能获取到的解决方法:

    因为KindEditor的可视化操作在新创建的iframe上执行,代码模式下的textarea框也是新创建的,所以最后提交前需要执行 sync() 将HTML数据设置到原来的textarea. Kin ...

  3. 编程写一个方法时,注意方法中传参数的数量最好不要超过5个,超过5个怎么办?可以用struct或class,或一个字典类

    图  1 一.从图1发现了什么问题呢? 答案:1.参数传的的太多了:2.另外注释也没写好. 说明:一个方法中,传参数的数量最好不要超过5个. 应该采用:struct或class,或一个字典类都行.其中 ...

  4. js 获取地址栏最后一个文件名称

    var JsRequest={ //这就是一个静态类,类里面有2个静态方法 //方法一:获取url的文件名 例如 index.html getUrlname:function(url){ //假如传进 ...

  5. 强制获取序列下一个值/当前值(oracle函数)

    原文链接--http://blog.csdn.net/qq525099302/article/details/47146393 为什么要使用函数来获取序列值请看这里 -- 创建获取序列下一个值的函数 ...

  6. JS存取Cookies值

    这里对cookie进行了说明,也介绍了几个方法,但是我要取我存的cookie时取不到,他的方法只是针对存的  名字-值,不涉及键,所以自己写了个方法,来满足我的需求. 封装了简单存取Cookie: / ...

  7. WebView使用详解(一)——Native与JS相互调用(附JadX反编译)

    念念不忘,必有回响,永远坚持你所坚持的! 一直在用WebView,还没有系统的总结过它的用法,下面就系统的总结下,分享给大家 一.基本用法 1.加载在线URL void loadUrl(String ...

  8. Data层相关问题 & JS循环取值

    第一次写博客,里面是自己工作中碰到的问题及总结的知识点,便于自己以后回顾,技术大牛们请直接忽略这篇文章,也希望能帮助到想我这样的小白! Data层相关问题总结: 1. 代码管理用的是 VSS 2005 ...

  9. Js基础知识5-函数返回值、函数参数、函数属性、函数方法

    函数返回值 所有函数都有返回值,没有return语句时,默认返回内容为undefined,和其他面向对象的编程语言一样,return语句不会阻止finally子句的执行. function testF ...

随机推荐

  1. ByteBuffer源码分析

    在进行数据传输的时候,往往需要使用到缓冲区,常用的缓冲区就是JDK NIO类库中提供的java.nio.Buffer,实现类如下: 在使用NIO编程时,最常用的是其中的ByteBuffer,本篇分析B ...

  2. mysql 修改表结构的字段名

    alter table domains  change STATUS  status  tinyint(1)  not null;

  3. 一些爬虫中的snippet

    1.tornado 一个精简的异步爬虫(来自tornado的demo) #!/usr/bin/env python import time from datetime import timedelta ...

  4. 你应该知道的jQuery技巧【收藏】

    jQuery的存在,让学习前端开发的人感到前端越来越容易入门了,用简单的几行代码就可以实现需求,但是,你真的会用jQuery么,当代码运行 后无法看到自己预期的效果,是不是觉得jQuery出了问题,其 ...

  5. Spring MVC 项目搭建 -6- spring security 使用自定义Filter实现验证扩展资源验证,使用数据库进行配置

    Spring MVC 项目搭建 -6- spring security使用自定义Filter实现验证扩展url验证,使用数据库进行配置 实现的主要流程 1.创建一个Filter 继承 Abstract ...

  6. VS2015 +Qt5 串口工具

    简单的小工具是VS2015 + Qt5.6.1实现的,界面部分是Qt实现,串口是封装的WinAPI,把串口收发模块封装成了个Serialport.dll 供Qt界面调用. 由于VS2015需要CRT运 ...

  7. 手机app微信支付后台处理流程

    第一步:客户在手机app确认订单,提交订单后,app将订单详情传给后台,后台将订单存入数据库,将存入数据库的id返回给app. 第二步:这时候手机端app会让客户选择哪种付款方式,我们做的是微信,所以 ...

  8. [Android FrameWork 6.0源码学习] Window窗口类分析

    了解这一章节,需要先了解LayoutInflater这个工具类,我以前分析过:http://www.cnblogs.com/kezhuang/p/6978783.html Window是Activit ...

  9. 解决CentOS7中文乱码(包括Tomcat日志乱码)问题

    Linux系统中文语言乱码,是很多小伙伴在开始接触Linux时经常遇到的问题,而且当我们将已在Wndows部署好的项目搬到Linux上运行,Tomcat的输出日志中文全为乱码(在Windows上正常) ...

  10. bootstrap栅栏系统css中的col-xs-*、col-sm-*、col-md-* 的意义以及 bootstrap一个标签中,同时有 col-xs , col-sm , col-md , col-lg的理解

    摘要: bootstrap栅栏系统css中的col-xs-*.col-sm-*.col-md-* 的意义: .col-xs- 超小屏幕 手机 (<768px) .col-sm- 小屏幕 平板 ( ...