2012-04-18 7 views
3

Могу ли я получить некоторые идеи или пример того, как я мог заполнять проверенное состояние переключателей, зависящих от данных, загружаемых из базы данных?Выбор переключателей на основе ответа json

Например я генерации массива из SELECT запроса, который выглядит как:

array(
[0] => array( 
    ['note_id'] => 1 
    ['value'] => 'no' 
) 
[1] => array(
    ['note_id'] => 4 
    ['value'] => 'yes' 
) 
[2] => array( 
    ['note_id'] => 5 
    ['value'] => 'yes' 
) 
) 

Флажок для групп выглядит следующим образом:

<input type="radio" name="1" value="yes"> 
<input type="radio" name="1" value="no"> 
<input type="radio" name="1" value="done"> 

<input type="radio" name="2" value="yes"> 
<input type="radio" name="2" value="no"> 
<input type="radio" name="2" value="done"> 

Теперь с помощью json_encode я поставил массив данных результатов в :

[{"note_id":"1","value":"no"},{"note_id":"4","value":"yes"},{"note_id":"5","value":"yes"}] 

Я передаю эти результаты s назад через ajax .. что-то вроде? :

$j.ajax({ 
    url: readurl, 
    type: "GET", 
    data: 'sku=' + thisSku, 
    dataType: "json", 
    success: function (data){ 
     // ? now what 
    }  
}); 

Может кто-нибудь помочь мне понять, как я теперь могу взять данные json, чтобы выбрать подходящие варианты? Как создать цикл, который запускает проверку, если note_id соответствует атрибуту ввода [name], и если да, то проверьте кнопку с соответствующим значением? Является ли json лучшим способом справиться с этим? Должен ли я использовать .getJSON()?

+1

+1 для Показана наша цель учиться. –

ответ

6

Внутри успеха обратного вызова вы можете просто итерации по data, который должен быть [{"note_id":"1","value":"no"},{"note_id":"4","value":"yes"},{"note_id":"5","value":"yes"}].

DEMO

$.each (data, function (i, obj) { 
    $(':radio[name=' + obj.note_id + '][value=' + obj.value + ']').prop('checked', true); 
}); 
+0

Это отлично работает! Спасибо! – Zac

2
var data = {"nodes": [{"note_id":"1","value":"no"},{"note_id":"4","value":"yes"},{"note_id":"5","value":"yes"}] } 

$('input:radio').attr('checked','') 
$.each(data.nodes,function(a,b){ 
    $("input[name="+b.note_id+"][value="+b.value+"]:radio").attr('checked','checked') 

}) 

Может быть что-то подобное будет работать для вас ...

2

Создание $ .each() цикл на объекте JSon, а затем сравнить note_id со значением имени и добавить свойство

var notas = [{"note_id":"1","value":"no"},{"note_id":"4","value":"yes"},{"note_id":"5","value":"yes"}]; 


$.each(notas,function(i, v){ 
    $('input[type=radio][name=' + this.note_id + ']').prop('checked','true'); 

}); 
​ 

http://jsfiddle.net/chepe263/wLDHk/

0

Попробуйте что-то вроде этого:

$j.ajax({ 
    url: readurl, 
    type: "GET", 
    data: 'sku=' + thisSku, 
    dataType: "json", 
    success: function (data){ 
     $.each(data, function(i, item) { 
      alert("note_id: " + item.note_id + ", value: " + item.value); 
     }); 
    }  
}); 

Вы зайца, чтобы заменить де уведомления с вашим кодом.

Greatings.

Смежные вопросы