這裏對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