JS存取Cookies值,附自己寫的擷取cookies的一個方法

來源:互聯網
上載者:User

標籤:基本   datetime   比較   function   它的   key   tar   集合   else   

參考:指令碼之家

這裡對cookie進行了說明,也介紹了幾個方法,但是我要取我存的cookie時取不到,他的方法只是針對存的  名字-值,不涉及鍵,所以自己寫了個方法,來滿足我的需求。

①你首先的瞭解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}`);            });

 

資料都可以取到。

 

JS存取Cookies值,附自己寫的擷取cookies的一個方法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.