cookie的常用操作

JavaScript是運行在客戶端的腳本,因此一般是不能夠設置Session的,因為Session是運行在服務器端的。而cookie是運行在客戶端的,所以可以用JS來設置cookie。

假設有這樣一種情況,在某個用例流程中,由A頁面跳至B頁面,若在A頁面中采用JS用變量temp保存了某一變量的值,在B頁面的時候,同樣需要使用JS來引用temp的變量值,對于JS中的全局變量或者靜態變量的生命周期是有限的,當發生頁面跳轉或者頁面關閉的時候,這些變量的值會重新載入,即沒有達到保存的效果。解決這個問題的最好的方案是采用cookie來保存該變量的值,那么如何來設置和讀取cookie呢?

首先需要稍微了解一下cookie的結構,簡單地說:cookie是以鍵值對的形式保存的,即key=value的格式。各個cookie之間一般是以“;”分隔。

JS設置cookie

假設在A頁面中要保存變量username的值("yyf")到cookie中,key值為name,則相應的JS代碼為:

document.cookie = "name=" + yyf;

假設需要加上過期時間,方法如下:

function setCookie(name,value){
    var Days = 30;
    var exp = new Date();
    exp.setTime(exp.getTime() + Days*24*60*60*1000);//時間戳以毫秒為單位
    document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString();
}

JS讀取cookie

假設cookie中存儲的內容為:username=yyf;password=123

則在B頁面中獲取變量username的值的JS代碼如下:

var username=document.cookie.split(";")[0].split("=")[1];
//則該username獲取結果為yyf
注意:上述方法僅指明確cookie的數據數目和順序的情況下才可使用,比如自己設置的或者通過瀏覽器查看后的頁面。若是一個陌生頁面,則應該通過如下萬能法
function getCookie(cName){
    var cookieArr = document.cookie.split(";");//將cookie通過分號分割,存為一個名為cookieArr的數組
    for (var i=0; i < cookieArr.length; i++){
        var cookieVal = cookieArr[i].split("=");//遍歷數組,將每一個cookie的key和value通過等于號分割,存為一個名為cookieVal的數組
        if (cName == cookieVal[0])
        return unescape(cookieVal[1]);//將value值解密后拿出
    }
    return null;
}

刪除cookies

function delCookie(name){
    var exp = new Date();
    exp.setTime(exp.getTime() - 1);//將本地時間戳設置為不存在的一個時間即可
    var cval=getCookie(name);
    if(cval!=null)
    document.cookie= name + "="+cval+";expires="+exp.toGMTString();
}

jQuery-Cookie插件

jQuery.cookie.js是個很好的cookie插件,包括設置、刪除、獲取等一系列完整的cookie操作

  • 創建會話cookie(Session cookie,既瀏覽器內存cookie,瀏覽器關閉后自動刪除)
$.cookie('the_cookie', 'the_value');
  • 創建一個生生存周期為7天的cookie
$.cookie('the_cookie', 'the_value', { expires: 7 });
  • 創建一個有期限的cookie,整個站點可以讀取
$.cookie('the_cookie', 'the_value', { expires: 7, path: '/' });
  • 讀取cookie
$.cookie('the_cookie'); // => "the_value"
$.cookie('not_existing'); // => undefined
  • 讀取所有可用cookie
$.cookie(); // => { "the_cookie": "the_value", "...remaining": "cookies" }
  • 刪除cookie
// 找到指定的cookie返回true,否則返回false
$.removeCookie('the_cookie');
// 刪除指定過path的cookie
$.removeCookie('the_cookie', { path: '/' });
$.cookie(’name’, ‘value’, {expires: 7, path: ‘/’, domain: ‘jquery.com’, secure: true});

(1)讀取cookie值
   $.cookie(cookieName)  cookieName:要讀取的cookie名稱。
     示例:$.cookie("username"); 讀取保存在cookie中名為的username的值。
(2)寫入設置Cookie值:
   $.cookie(cookieName,cookieValue);  cookieName:要設置的cookie名稱,cookieValue表示相對應的值。
   示例:$.cookie("username","admin"); 將值"admin"寫入cookie名為username的cookie中。
      $.cookie("username",NULL);   銷毀名稱為username的cookie
(3)[option]參數說明:
    expires:  有限日期,可以是一個整數或一個日期(單位:天)。  這個地方也要注意,如果不設置這個東西,瀏覽器關閉之后此cookie就失效了
    path:    cookie值保存的路徑,默認與創建頁路徑一致。
      domin: cookie域名屬性,默認與創建頁域名一樣。  這個地方要相當注意,跨域的概念,如果要主域名二級域名有效則要設置  ".xxx.com"
      secrue:   一個布爾值,表示傳輸cookie值時,是否需要一個安全協議。

另外更多操作詳情點擊API文檔

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,936評論 6 535
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,744評論 3 421
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,879評論 0 381
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,181評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,935評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,325評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,384評論 3 443
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,534評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,084評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,892評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,067評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,623評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,322評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,735評論 0 27
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,990評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,800評論 3 395
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,084評論 2 375

推薦閱讀更多精彩內容