這里對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}`);
});


數據都可以取到。

