Javascript-форум (https://javascript.ru/forum/)
-   Учебные материалы (https://javascript.ru/forum/study/)
-   -   Помогите разобраться с JSON (https://javascript.ru/forum/study/49530-pomogite-razobratsya-s-json.html)

Alex_dark74 17.08.2014 10:47

Помогите разобраться с JSON
 
Сталкиваюсь первый раз, от сюда возникают проблемы.
Идея такова. На странице есть много chekbox относящихся к выборке информации.Хочу записать информацию о активных и не активных chekbox в куки в виде массива.
Делаю так:
function write_cookies (){
  var cooc = $('.all_work'); //Вибираем все chekbox
  
  var parametr_work = {}; // Пустой массив для добавления информации о chekbox, его будем записывать в Куки
  
  for(var i=0; i<cooc.length; i++) { // перебор результатов
    //alert( cooc[i].id );
    if($(cooc[i]).is(":checked"))
    {
      //alert(cooc[i].id + " выбрано");
      parametr_work[cooc[i].id] = "true"; //Записывает в массив включенные chekbox
    }
   else
   {
    //alert(cooc[i].id + " НЕ выбрано");
    parametr_work[cooc[i].id] = "false"; //Записывает в массив ОТключенные chekbox
    }
  }
  result = JSON.stringify(parametr_work); //Переводим массив в строку
  alert(result);
  $.cookie ('work',result); //Добавляем строку в Куки
  //console.log(parametr_work); //Вывод в консоль
}


в куки записывается строка:
{"Ламинация":"true","Вырубка":"tru e","Подбор автомат":"false","Фальцовка автомат":"false","Биговка":"false"," Скругление":"false","Фальцовка ручная":"false","Подбор ручной":"false","Перфорация":"fals e","Склейка":"false","Сверление":" false","Термоклей":"false","Скрепк автомат":"false","Пружина металл":"false","Скрепка ручная":"false","Склейка блоков":"false","Ш/ф ламинация":"false","Ш/ф обработка баннера":"false","Ш/ф установка люверсов":"false"}

1 вопрос. Правильно ли я перевел выборку в массив и верно ли я использовал JSON для перевода в строку.

Далее я выбираю из куков строку и перевожу ее обратно в массив.
function read_cookies(){
  var result = $.cookie('work'); //Читаем куки
  result2 = eval(result);
  console.log(result2); //Вывод в консоль
}

Вот тут возникает проблема.
В консоли выдает:

SyntaxError: missing ; before statement


{"Ламинация":"true","Вырубка":"fal se","Подбор автомат":"false","Фальцовк
-------------

В конце пунктира есть стрелочка указывающая на ":" между "Ламинация" и "true". А в чем причина не понимаю

ixth 17.08.2014 12:44

Используй не eval, а JSON.parse.

Alex_dark74 17.08.2014 13:03

При использовании JSON.parse
вроде бы отрабатывает, но выдает ошибку на библиотеку jquery, на первый return. Это критично?

jQuery.readyList.push(function(){return fn.call(this,jQuery);});return this;}});...


Часовой пояс GMT +3, время: 04:47.