1. 程式人生 > >JS設定cookie、讀取cookie、刪除cookie的三個方法

JS設定cookie、讀取cookie、刪除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的值(“jack”)到cookie中,key值為name,則相應的JS程式碼為:

document.cookie="name="+username;  

JS讀取cookie:

假設cookie中儲存的內容為:name=jack;password=123

則在B頁面中獲取變數username的值的JS程式碼如下:

var username=document.cookie.split(";")[0].split("=")[1];  

下面就分別封裝3個方法來實現設定、讀取、刪除cookie

1. 設定cookies

//name為cookie的名稱,value為name值,expireHours為過期時間
function setCookie(name,value,expireHours) 
{ 
    var exp = new Date(); 
    exp.setTime(exp.getTime() + expireHours*60*60*1000); //exp過期時間 = 當前時間 +過期時間(秒)
    document.cookie = name + "="+ escape (value) + ";expires=" + exp.toGMTString(); 
    //將值及過期時間一起儲存至cookie中(需以GMT格式表示的時間字串)
//方法是用escape()函式進行編碼,它能將一些特殊符號使用十六進位制表示,例如空格將會編碼為“20%”,從而可以儲存於 cookie值中,而且使用此種方案還可以避免中文亂碼的出現。 }

2. 讀取cookies

function getCookie(name) 
{ 
    var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");

    if(arr=document.cookie.match(reg))

        return unescape(arr[2]); 
    else 
        return null; 
} 

3. 刪除cookies

function delCookie(name) 
{ 
    var exp = new Date(); 
    exp.setTime(exp.getTime() - 1); //將date設定為過去的時間
    var cval=getCookie(name); 
    if(cval!=null) 
        document.cookie= name + "="+cval+";expires="+exp.toGMTString(); 
} 

相關推薦

JS設定cookie讀取cookie刪除cookie方法

JavaScript是執行在客戶端的指令碼,因此一般是不能夠設定Session的,因為Session是執行在伺服器端的。 而cookie是執行在客戶端的,所以可以用JS來設定cookie. 假設有這樣一種情況,在某個用例流程中,由A頁面跳至B頁面,若在A頁

C++學習--向txt檔案寫入資料讀取資料獲取行數以及刪除檔案

基於VS2013平臺的程式碼如下: #include <iostream> #include <fstream> using namespace std; void main() { ofstream fout; int a = 15;

JS獲取客戶端IP地址MAC和主機名的7方法彙總

這篇文章主要介紹了JS獲取客戶端IP地址、MAC和主機名的7個方法彙總,JS本身是不支援獲取IP地址等資訊的,本文通過其它方法實現,需要的朋友可以參考下 今天在搞JS(javascript)獲取客戶端IP的小程式,上網搜了下,好多在現在的系統和瀏覽器中的都無效,很無奈,在C

C++學習筆記(二):開啟檔案讀取資料資料定位與資料寫入

1.開啟二進位制檔案(fopen)、讀取資料(fread),應用示例如下: FILE *fp = fopen("data.yuv", "rb+"); //開啟當前目錄中的data.yuv檔案 char *buffer = ( char*) malloc (sizeof(char)*FrameSi

selenium+python做引數化,直接用列表讀取txtcsv檔案內容

1、直接在指令碼中寫一個列表作為引數: 以百度輸入框中每次輸入不同字元為例: from selenium import webdriver search_text = ['python', '中文', 'text'] for text in search_text: driv

PB儲存圖片讀取圖片顯示圖片

選擇要儲存的圖片 string ls_pathname, ls_filename integer li_value li_value = getfileopenname("選擇照片", + ls_pathname, ls_filename, "圖片檔案","jpg f

SQL關於刪除語句:DROPTRUNCATE DELETE 的區別。

truncate table 命令將快速刪除資料表中的所有記錄,但保留資料表結構。這種快速刪除與 delete from 資料表的刪除全部資料表記錄不一樣,delete 命令刪除的資料將儲存在系統回滾段中,需要的時候,資料可以回滾恢復,而 truncate 命令刪除的資料是不

MySQL關於刪除語句:DROPTRUNCATE DELETE 的區別。

DROP: DROP TABLE test; 刪除表test,並釋放空間,將test刪除的一乾二淨。 TRUNCATE: TRUNCATE test; 刪除表test裡的內容,並釋放空間,但不刪除表的定義,表的結構還在。 DELETE: 1、刪除指定資料 刪

SQL 刪除語句:DROPTRUNCATE DELETE 的區別

轉載:http://www.runoob.com/sql/sql-delete.html DROP: DROP test; 刪除表test,並釋放空間,將test刪除的一乾二淨。 TRUNCATE: TRUNCATE test; 刪除表test

C# 好程式碼學習筆記(1):檔案操作讀取檔案Debug/Trace 類Conditional條件編譯CLS

[TOC] 目錄: 1,檔案操作 2,Debug、Trace類 3,條件編譯 4,MethodImpl 特性 5,CLSComplianAttribute 6,必要時自定義類型別名 最近在閱讀 .NET Core Runtime 的原始碼,參考大佬的程式碼,學習編寫技巧和提高程式碼水平。學

二十一安裝軟件包的方法RPM包介紹rpm工具用法yum工具用法yum搭建本地倉庫

rpm工具 yum工具 二十一、安裝軟件包的三種方法、RPM包介紹、rpm工具用法、yum工具用法、yum搭建本地倉庫一、安裝軟件包的三種方法rpm工具、yum工具、源碼包RPM工具:是以一種數據庫記錄的方式將需要的套件安裝到Linux主機的一套管理程序。就是說,你的Linux系統中有一個關於RPM的

python讀文件的方法read()readline()readlines()詳解

pytho class readline col 變量 type 返回 限制 log """ 1、讀取文件的三個方法:read()、readline()、readlines() 2、三個方法均可接受一個變量用以限制每次讀取的數據量,通常不使用該變量。 """

ByteBuffer中的 clearfliprewind方法區別以及如何使用

  我在網上搜索了很多,大部分都是說針對mark、limit、capacity、position 標誌量來解釋的,ok!我想補充一下,從如何應用的方面來說明其含義。  例如:  1、有一個檔案共有20個字元:      abc

關於document的方法:openwriteclose

document.open會開啟一個新文件,清除已載入的文件;document.write在HTML載入後呼叫會導致open方法呼叫一次;document.close會關閉開啟的文件。 直接看程式碼和效果圖: <!DOCTYPE html> &l

為什麼SpringAOP使用JDK動態代理時好像沒有代理Object.[equals()hashCode()toString()]這方法

* Spring的AOP是通過JDK動態代理或者CGLib來生成目標物件的代理物件,然後將增強功能(Aspect【包括了Advice和Pointcut】)織入到符合條件(Pointcut)的類的方法(JoinPoint)上。 //這是JDK

OC中陣列字典的遍歷的方法

<span style="white-space:pre"> </span> NSArray * array = @[@"中國",@"俄羅斯",@"印度"]; //1、列舉器 NSEnumerator

python讀檔案的方法read()readline()readlines()詳解

#-*-coding:utf-8-*- ''' Created on 2015年8月22日 @author: Zroad ''' """ 1、讀取檔案的三個方法:read()、readline()、readlines() 2、三個方法均可接受一個變數用以限制

Python列表刪除方法

存儲 需要 刪除元素 /usr 一個 last 可能 light pytho 1、使用del語句刪除元素 >>> i1 = ["a",‘b‘,‘c‘,‘d‘] >>> del i1[0] >>> print(i1)

Halcon一日一練:讀取檔案目錄影象的方法

第一種方法: 讀了一個單一影象: read_image(Image,'fabrik') 這種方式可以快速的讀取軟體自身攜帶的庫影象檔案,系統設定了庫影象映像檔案的快速讀取方式,我們也可以通過絕對地址的方式來讀取指定的目錄檔案: read_image(Image1,'E:/Halcon一日一練/參考資料

js replace替換字符串,同時替換多方法

console wrap 轉義字符 -c 字符串 聯網 spl indent con 在實際開發中,經常會遇到替換字符串的情況,但是大多數情況都是用replace替換一種字符串,本文介紹了如何使用replace替換多種指定的字符串,同時支持可拓展增加字符串關鍵字。