JS存取Cookies值

這裏對cookie進行了說明,也介紹了幾個方法,可是我要取我存的cookie時取不到,他的方法只是針對存的  名字-值,不涉及鍵,因此本身寫了個方法,來知足個人需求。html

封裝了簡單存取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的兩種存法   查看  這篇文章下面的一點的位子有介紹cookie

js存cookie:測試

   //存cookie
   document.cookie = "xxx=456"; //不帶子鍵
   document.cookie = "haha=hello=123&word=456"; //帶子鍵

這個太簡單了。編碼

咱們獲取Cookiespa

var cookies = document.cookie.split(";");
$.each(cookies, function (i, item) {
console.log(item);
})

很明顯,最後兩行是帳號和密碼的cookie值。是否是很差處理。爲了作測試,而後我又加了兩個cookierest

複製代碼
    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,基本狀況都包含了。而後本身寫了一個方法,可能比較繁瑣,用的時候調用方法傳遞參數就能夠了,返回的就是 值。code

複製代碼
             /*  參數說明            
                  ...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;
            };
複製代碼

咱們作測試:htm

複製代碼
  $(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}`);
            });
複製代碼

 

數據均可以取到。blog

相關文章
相關標籤/搜索