Я хочу сохранить массив Javascript как Cookie - PullRequest
36 голосов
/ 05 июня 2010

Возможно ли, у меня есть какой-то список, и я хочу сохранить его в браузере, если это невозможно, каков эффективный способ сделать это?

Ответы [ 3 ]

78 голосов
/ 05 июня 2010

JSON кодирует его, эффективно создавая строку типа "{name:'myname',age:'myage'}", которую вы помещаете в cookie, извлекаете при необходимости и декодируете обратно в массив / объект JavaScript.

Пример - сохранить массив в куки:

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

Позже, чтобы получить содержимое куки в виде массива:

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

Примечание: функции cookie не являются собственными, взяты из Как создать и прочитать значение из cookie?

29 голосов
/ 05 июня 2010

Один быстрый метод - join() вашего массива в одну строку с использованием соответствующего разделителя:

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

Затем просто используйте метод split() для возврата массива из строки cookie.

3 голосов
/ 16 июня 2013

Для каждого значения id в массиве, пожалуйста, попробуйте метод ниже, чтобы сохранить значение в массиве cookie:

<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>

И вы можете получить этот массив в php:

<?php
foreach($_COOKIE['item'] as $e){
echo $e,'<br />';
}
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...