Сохранить список массивов, используя куки JQuery - PullRequest
0 голосов
/ 22 февраля 2019

Могу ли я сохранить список массивов в cookie?

Мой список массивов будет выглядеть примерно так:

itemsarray

        var productId=[];
	   		productId['id'] = 'product id';
	   		productId['title'] = 'product-name';
        
        itemsarray.push(productId);
0: [id: 153359796766, title: "adidas EQT Cushion ADV Shoes Men's "]
1: [id: 391912235126, title: "Sonos One Voice-Controlled Wireless Smart"]

Я попробовал следующий метод, но не повезло, он всегда возвращает мне пустой массив.Я думаю, что проблема в JSON.stringify

json_str = JSON.stringify(itemsarray);
$.cookie('ID', json_str);
console.log(json_str);

есть ли решение?

Ответы [ 3 ]

0 голосов
/ 22 февраля 2019

Вы можете сделать это также с помощью localStorage, как правило, большинство браузеров позволяют хранить больше данных (не более 5 МБ в 2019 году) в локальном хранилище, а также для повышения производительности, если вам не нужен сервер для их чтения.

window.localStorage.array_1 = JSON.stringify(itemsarray);
console.log(window.localStorage.array_1);

/// and to convert it back to an array object
console.log(JSON.parse(window.localStorage.array_1));
0 голосов
/ 22 февраля 2019

Все решения предоставляют альтернативу и предлагают ему вместо этого использовать локальное хранилище, что является хорошим предложением (лично мне никогда не приходилось использовать куки вместо хранилища), но в случае, если OP def необходимо использовать куки, этобыло бы ванильным подходом к проблеме:

Вы можете просто сохранить этот массив, выполнив:

document.cookies = `id={$JSON.stringify(itemsArray)}` 

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

cookies = 'value=thevalue;value2=the2value'

Вам нужно либо разделить строку на «;»или запустить регулярное выражение в соответствии с предложением сайта mdn:

var cookieValue = document.cookie.replace (/ (?: (?: ^ |. ; \ s ) id \ s * \ = \ s * ([^;] ). $) | ^. * $ /, "$ 1");

, где id обозначает ваш ключ cookie.

Тогда вы просто делаете JSON.parse(cookieValue)

Источник: Небольшая структура cookie от mdn

0 голосов
/ 22 февраля 2019

Прежде всего, ваш массив должен содержать json.

Например:

const items = [
    {id: 153359796766, title: "adidas EQT Cushion ADV Shoes Men's "},
    {id: 391912235126, title: "Sonos One Voice-Controlled Wireless Smart"}
];

Если вам не нужны эти данные на стороне сервера, вы можете использовать localStorage:

localStorage.setItem('items', items);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...