web-dev-qa-db-fra.com

Je souhaite stocker le tableau Javascript en tant que cookie

Est-il possible, j'ai une sorte de liste et je veux la stocker sur le navigateur, si ce n'est pas possible, quelle est la manière efficace de le faire?

38
Oguz Bilgic

JSON l'encode, produisant efficacement une chaîne comme "{name:'myname',age:'myage'}" que vous placez dans un cookie, récupérez si nécessaire et décodez à nouveau dans un tableau/objet JavaScript.

Exemple - stocker le tableau dans un cookie:

var arr = ['foo', 'bar', 'baz'];
var json_str = JSON.stringify(arr);
createCookie('mycookie', json_str);

Plus tard, pour récupérer le contenu du cookie sous forme de tableau:

var json_str = getCookie('mycookie');
var arr = JSON.parse(json_str);

Remarque: les fonctions des cookies ne sont pas natives, tirées de Comment créer et lire une valeur à partir des cookies?

79
George Kagan

Une méthode rapide consiste à join() votre tableau en une seule chaîne, en utilisant un délimiteur approprié:

var a = [1, 2, 3, 4];
a.join('|');  // Returns: "1|2|3|4"

Ensuite, utilisez simplement la méthode chaîne split() pour récupérer le tableau à partir de la chaîne de cookie.

30
Daniel Vassallo

Pour chaque identifiant de valeur dans un tableau, veuillez essayer la méthode ci-dessous pour enregistrer une valeur dans un tableau de cookies:

<script type="text/javascript">

/**
 * set cookie
 */
function set_cookie(cookiename, cookievalue, hours) {
    var date = new Date();
    date.setTime(date.getTime() + Number(hours) * 3600 * 1000);
    document.cookie = cookiename + "=" + cookievalue + "; path=/;expires = " + date.toGMTString();

}

set_cookie('item['+id+']', id, 24*365*10); // 10 years

</script>

Et vous pouvez récupérer ce tableau en php:

<?php
foreach($_COOKIE['item'] as $e){
echo $e,'<br />';
}
?>
3
David Wong