2009-08-06 3 views
2

Я пытаюсь заполнить форму списком вопросов и переключателями. При загрузке страницы У меня есть переменная, которая содержит ответы, которые они до сих пор в виде строки в формате JSON:parse variable as JSON w/jQuery

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 - это то, что я должен смотреть, но мне не нужно делать звонок, чтобы получить данные, так как у меня уже есть это.

ответ

0

Понял, удалены кавычки, как упоминалось выше, добавлен класс, который соответствовал идентификатор, чтобы я мог выбрать все элементы для данного 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); 
       }); 
    } 
} 

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

4

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

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

GAH - теперь я просто хочу знать, как получить значения из базовых объектов ответа, я прохожу через них следующим образом: для (var i = 0; i Slee

+0

json.answers [i] .84 получит первое значение. –

+0

Да, цифры всегда меняются - я никогда не узнаю их раньше времени – Slee

0

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

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