2017-02-17 11 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からJSON文字列を取得すると、実際の配列に変換されます。

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

これは完全に働いた、ありがとうございました! –

0

と仮定すると、あなたが保存したい/ほぼそれ行い、複数のcookies.Your取得クッキーの事を取得する:あなたはまず、すべての、ないを返却しなければならない、とあなたが削除する必要が

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("="); 
    } 
}); 
}; 

を名前付きの検出。

console.log(getCookies()); 

SetCookies:

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

setCookies([ 
    ["name","value"] 
]); 
関連する問題