zoukankan      html  css  js  c++  java
  • JS存取Cookies值,附自己写的获取cookies的一个方法

    参考:脚本之家

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

    封装了简单存取Cookie:

    //写Cookie
    function addCookie(objName, objValue, objHours) {
        var str = objName + "=" + escape(objValue); //编码
        if (objHours > 0) {//为0时不设定过期时间,浏览器关闭时cookie自动消失
            var date = new Date();
            var ms = objHours * 3600 * 1000;
            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 = 0; i < arrStr.length; i++) {
            var temp = arrStr[i].split("=");
            if (temp[0] == objName) return unescape(temp[1]);  //解码
        }
        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(10);
                Response.Cookies.Add(hcName);
    
                HttpCookie hcPwd = new HttpCookie("testPwd");
                hcPwd["sonKey"] = "测试密码";
                // hcPwd.Values["sonKey"] = 测试密码;   上下两种都可以
                hcPwd.Expires = DateTime.Now.AddDays(10);
                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) > -1) {
                            //你先的理解cookie这个位子才好理解   cookie可以有子键,也可以没有子键
                            //①格式: 名字=值
                            if (rest.length === 0) {
                                var names = item.split("=")
                                //console.log(`名字;${names[0]},值:${names[1]}`);
                                dd = names[1];
                            }
                            else {
                                //②格式:名字=子键=值&子键1=值1&子键2=值2
                                //这种的麻烦在于它的子键可以有很多
                                var arry = item.split("&");     //取到所有的子键和值,注意:此集合的第一项,多了个名字
                                if (arry.length > 1) {
                                    $.each(arry, function (a, b) {
                                        if (b.indexOf(rest[0]) > -1) {
                                            var names = b.split("=");
                                            if (names[0] == name) {    //判断是否带cookie的名字
                                               // console.log(`名字:${name},子键:${names[1]},值:${names[2]}`);
                                                dd = names[2];
                                            } else {
                                                console.log(`名字:${name},子键:${names[0]},值:${names[1]}`);
                                                dd = names[1];
                                            }
                                        }
                                    });
                                } else {
                                    var arry1 = arry[0].split("=");
                                    console.log(`名字:${name},子键:${arry1[1]},值:${arry1[2]}`);
                                    dd = arry1[2];
                                }
                            }
                        }
                    });
                    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}`);
                });

    数据都可以取到。

  • 相关阅读:
    对眼睛有利的屏幕颜色
    C++的动态联编与静态联编【转载】
    关于虚析构函数
    虚析构函数的使用(转载!)
    c/c++内存机制(转)
    delete this
    PhpStorm环境配置
    flutter之路由与导航
    flutter之Widget
    Flutter项目初步认识
  • 原文地址:https://www.cnblogs.com/Sea1ee/p/7308001.html
Copyright © 2011-2022 走看看