Проверьте, являются ли данные cookie массивом - PullRequest
0 голосов
/ 23 октября 2019

Я передаю идентификаторы в cookie-файлы при каждом щелчке продукта на моем сайте.

Каждый щелчок добавляет новые идентификаторы к существующему значению cookie, создавая массив.

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

var cookieArray = [];

cookieArray.push('582');

Пример после того, как я нажал 3 продукта. 582, 590 и 572

[582%2C590%2C572]

Мой вопрос: Правильно ли формат моего значения cookie - массив? Учитывая, что %2C разделяет каждый идентификатор?

Я позже собираю данные с помощью PHP и перебираю каждое значение.

1 Ответ

0 голосов
/ 23 октября 2019

%2 - это запятая (,), так что да, если вы структурируете массив JS, а затем кодируете его, это то, что вы получаете.

Вы можете использовать PHP unserialize для его анализа.

Вы также можете сохранить JSON в своих файлах cookie, а затем использовать json_decode для его анализа.

const IDs = [1, 2, 3];

document.getElementById('content').innerHTML = `
  encodeURIComponent(',') = ${ encodeURIComponent(',') }
  decodeURIComponent('%2C') = ${ decodeURIComponent('%2C') }
  
  IDs.toString() = ${ IDs.toString() }
  encodeURIComponent(IDs.toString()) = ${ encodeURIComponent(IDs.toString()) }
  
  JSON.stringify(IDs) = ${ JSON.stringify(IDs) }
  encodeURIComponent(JSON.stringify(IDs)) = ${ encodeURIComponent(JSON.stringify(IDs)) }
`;

document.cookies = `productIds=${ JSON.stringify(IDs) }`;

console.log(document.cookies);
console.log(Array.isArray(JSON.parse(document.cookies.split('=')[1])));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...