2017-02-17 71 views
2

我存儲和使用方法,餅乾檢索值:如何使用document.cookie來存儲和檢索數組中的值?

function setCookie(cname, cvalue, exdays) { 
    var d = new Date(); 
    d.setTime(d.getTime() + (exdays*24*60*60*1000)); 
    var expires = "expires="+ d.toUTCString(); 
    document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/"; 
}; 

function getCookie() { 
    var name = "name="; 
    var decodedCookie = decodeURIComponent(document.cookie); 
    var ca = decodedCookie.split(';'); 
    for(var i = 0; i <ca.length; i++) { 
     var c = ca[i]; 
     while (c.charAt(0) == ' ') { 
      c = c.substring(1); 
     } 
     if (c.indexOf(name) == 0) { 
      return c.substring(name.length, c.length); 
     } 
    } 
    return ""; 
}; 

現在我需要存儲/檢索陣列以類似的方式。我知道我需要將數組創建爲單個字符串,然後解析它,但是最好的方法是什麼?

回答

3

我推薦使用JSON。首先,你的數組轉換成JSON字符串:

var array = ["one","two","three"]; 
var json_string = JSON.stringify(array); 

然後,設置與JSON字符串的值的cookie。

setCookie("array", json_string, exdays); 

然後,當您稍後從cookie中檢索JSON字符串時,將其轉換回實際的數組。

var json_string = getCookie("array"); 
var array = JSON.parse(json_string); 
+1

這完美地工作,謝謝! –

0

假設,你想存儲/檢索多個cookies.Your得到Cookie的事情幾乎做的:

function getCookies() { 
var decodedCookie = decodeURIComponent(document.cookie); 
var ca = decodedCookie.split(';'); 
return ca.map(function(c){ 
    while (c.charAt(0) == ' ') { 
     c = c.substring(1); 
    } 
     return c.split("="); 
    } 
}); 
}; 

你只需要返回所有,不是第一次,你需要刪除namedetection。

console.log(getCookies()); 

SetCookies:

function setCookies(Cookies,exp){ 
Cookies.forEach(function(el){setCookie(el[0],el[1],exp);}); 
} 

setCookies([ 
    ["name","value"] 
]); 
相關問題