2017-02-17 83 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"] 
]); 
相关问题