關於cookie,一直是個很敏感的問題,以前對於cookie的處理,都是用原生的方式處理,創建函數對cookie進行處理,創建,設置以及刪除。。
function setCookie(key,value,day){ var date = new Date(); //獲取時間對象 var nowDate = date.getDate(); //返回日期月份中的天數(1-31) date.setDate(nowDate + day); //設置日期月份的天數 //document.cookie = key+"="+value+"; expires="+date; //將新增的名值對和指定的過期時間寫入cookie var cookie = key+"="+value+"; expires="+date; //本地模擬 return cookie; }
//獲取cookie var cookie = "name1=aa; name2=bb; name3=cc; name4=dd"; //模擬cookie function getCookie(key){ var arr = cookie.split("; "); //先通過分號和空格將字符串解析成數組["name1=aa", "name2=bb"…] for (var i=0; i<arr.length; i++){ var arr2 = arr[i].split("="); //通過等號再度解析["name1", "aa"] // console.log(arr2); if (arr2[0] == key){ //通過下標取得key,與傳進來的key相比較,然后返回對應的value return arr2[1]; } } }
//移除cookie function removeCookie(removeKey){ return setCookie(removeKey,".",-1); //移除cookie的簡便方法就是設置(時間戳)expires屬性等於0,或者等於一個過去的日期。 }
但是jq還是為我們提供了強大的cookie功能,避免我們在操作cookie的時候因為數據的繁瑣而產生錯誤的。
jquery.cookie.js
1).新添加一個會話 cookie:$.cookie('the_cookie', 'the_value');
注:當沒有指明 cookie有效時間時,所創建的cookie有效期默認到用戶關閉瀏覽器為止,所以被稱為“會話cookie(session cookie)”。
2).創建一個cookie並設置有效時間為 7天:$.cookie('the_cookie', 'the_value', { expires: 7 });
注:當指明了cookie有效時間時,所創建的cookie被稱為“持久 cookie (persistent cookie)”。
3).創建一個cookie並設置 cookie的有效路徑:$.cookie('the_cookie', 'the_value', { expires: 7, path: '/' });
注:在默認情況下,只有設置 cookie的網頁才能讀取該 cookie。如果想讓一個頁面讀取另一個頁面設置的cookie,必須設置cookie的路徑。cookie的路徑用於設置能夠讀取 cookie的頂級目錄。將這個路徑設置為網站的根目錄,可以讓所有網頁都能互相讀取 cookie (一般不要這樣設置,防止出現沖突) 。
4) .獲取cookie
$.cookie('the_cookie'); // cookie存在 => 'the_value' $.cookie('not_existing'); // cookie不存在 => null
5) .刪除cookie,通過傳遞null作為cookie的值即可:$.cookie('the_cookie', null);
代碼寫法:
var COOKIE_NAME = 'username'; if( $.cookie(COOKIE_NAME) ){ $("#username").val( $.cookie(COOKIE_NAME) ); } $("#check").click(function(){ if(this.checked){ $.cookie(COOKIE_NAME, $("#username").val() , { path: '/', expires: 10 }); //var date = new Date(); //date.setTime(date.getTime() + (3 * 24 * 60 * 60 * 1000)); //三天后的這個時候過期 //$.cookie(COOKIE_NAME, $("#username").val(), { path: '/', expires: date });
//$.cookie('name', ‘value', {expires: 7, path: ‘/', domain: ‘jquery.com', secure: true});
}else{ $.cookie(COOKIE_NAME, null, { path: '/' }); //刪除cookie } });
expires: (Number | Date) :有效期,可以設置一個整數作為有效期(單位:天),也可以設置一個日期對象作為Cookie的過期日期。如果指定日期為負數,那么此cookie將被刪除;如果不設置或者設置為null,那么此cookie將被當作Session Cookie處理,並且在瀏覽器關閉后刪除
path: (String) : Cookie的路徑屬性,默認是創建該cookie的頁面路徑
domain: (String) : Cookie的域名屬性,默認是創建該cookie的頁面域名
secure: (Boolean) :如果設為true,那么此cookie的傳輸會要求一個安全協議,例如HTTPS。
//部分內容轉載自網絡。