анализировать переменную как JSON w / jQuery - PullRequest
2 голосов
/ 06 августа 2009

Я пытаюсь заполнить форму списком вопросов и переключателями. Когда страница загружена, у меня есть переменная, содержащая ответы, которые у них есть, в виде строки в формате JSON:

var json = '{ "answers" : [{"84" : "Y" },{"85" : "Y" },{"86" : "Y" },{"87" : "Y" },{"88" : "Y" },{"89" : "N" },{"90" : "N" },{"91" : "N" },{"92" : "Y" },{"93" : "N" },{"94" : "Y" },{"95" : "N" },{"96" : "N" },{"97" : "Y" }]}';

Мне нужно перебрать ответы и найти переключатель с идентификатором, соответствующим номеру IE id = "84", и установить его значение на основе соответствующего значения (Y).

похоже, что getJSON - это то, на что я должен смотреть, но мне не нужно совершать вызов, чтобы получить данные, так как они у меня уже есть.

Ответы [ 3 ]

4 голосов
/ 06 августа 2009

Вы можете просто удалить кавычки снаружи, и они будут уже в правильном формате.

var json = {
                "answers" : [{"84" : "Y" },
                 {"85" : "Y" },
                 {"86" : "Y" },
                 {"87" : "Y" },
                 {"88" : "Y" },
                 {"89" : "N" },
                 {"90" : "N" },
                 {"91" : "N" },
                 {"92" : "Y" },
                 {"93" : "N" },
                 {"94" : "Y" },
                 {"95" : "N" },
                 {"96" : "N" },
                 {"97" : "Y" }
            ]
        };

В отличие от некоторых других форматов, JSON основан на фактическом языке , что означает, что вы можете использовать формат JSON в обычном кодировании. Довольно просто написать JSON.

0 голосов
/ 06 августа 2009

Понял, удалил кавычки, как упомянуто выше, добавил класс, который соответствовал ID, чтобы я мог выбрать все элементы для данного ID:

 for(var i =0; i < json.answers.length; i++) { 
           var item = json.answers[i]; 
           for (var j in item) {
              $('.' + j).each(function(){
                 if ($(this).attr("value") == item[j]) $(this).attr("checked", true);
              });
     }
 }

Я уверен, что, возможно, есть более элегантное решение, но пока оно работает очень хорошо.

0 голосов
/ 06 августа 2009

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

 jQuery.each(json.answers, function(i, val) {
   $("#" + i).val() = val;
 });
...