За последние 24 часа нас посетили 22466 программистов и 1152 робота. Сейчас ищут 636 программистов ...

serialize в JS?

Тема в разделе "JavaScript и AJAX", создана пользователем Nerfed, 18 апр 2019.

  1. Nerfed

    Nerfed Активный пользователь

    С нами с:
    21 июл 2017
    Сообщения:
    186
    Симпатии:
    12
    Накидываю сайтец пацану на диплом: https://jsfiddle.net/uhzdtjer/
    Интересует кнопка "купить" - что-то я с ней перемудрил по-моему.
    Сейчас работает так:
    в куку пишется строчка типа: 1*3-2*5
    Красным пометил id товара, зелёным количество, остальное это разделители.
    Так вот, эта строчка парсится в PHP через explode, а в JS через split. Думаю, может сделать проще? Я бы засунул массив в строку, но не знаю как сделать в JS serialize грамотно, чтобы потом в PHP unserialize делался без проблем. Подскажите кто плавал.
     
  2. TeslaFeo

    TeslaFeo Старожил

    С нами с:
    9 мар 2016
    Сообщения:
    2.989
    Симпатии:
    759
    JSON
     
    Roman __construct и Nerfed нравится это.
  3. Nerfed

    Nerfed Активный пользователь

    С нами с:
    21 июл 2017
    Сообщения:
    186
    Симпатии:
    12
    Точняк.
     
  4. Nerfed

    Nerfed Активный пользователь

    С нами с:
    21 июл 2017
    Сообщения:
    186
    Симпатии:
    12
    Дошли руки это попробовать. Делаю так:
    Код (Javascript):
    1. // берём id товара
    2. var id = $('#buy-button').data('id');
    3. // корзина пока пуста, создаём новую
    4. var basket = {};
    5. // добавляем в корзину товар с количеством 1
    6. basket[id] = 1;
    7. // объединяем в строку
    8. basket = JSON.stringify(basket);
    9. // записываем корзину в куку
    10. Cookies.set('basket', basket);
    Вот что записывается в куку, когда id товара 10:
    Код (Text):
    1. {%2210%22:1}
    Работает нормально, но что за %22 появились? Гугл пишет, что это двойные ковычки. Не получается убрать, перегуглил всё что мог.
     
    #4 Nerfed, 17 май 2019
    Последнее редактирование: 17 май 2019
  5. Nerfed

    Nerfed Активный пользователь

    С нами с:
    21 июл 2017
    Сообщения:
    186
    Симпатии:
    12
    Всё, разобрался. Экранирование делала эта библиотека: https://github.com/js-cookie/js-cookie
    Записал в куки так и экранирование ушло:
    Код (Javascript):
    1. document.cookie = 'basket='+basket;
    Результат:
    Код (Text):
    1. {"5":"1","6":4,"8":5}