2014-05-09 2 views
1

JSON으로 콤보 상자를 채우고 싶습니다. 나는 myDropDownA이 원하는JSON의 콤보 박스 채우기 (문자열 기준)

...

<div> 
<h1>Choose:</h1> 
    <select name="myDropDownA" id="myDropDownA"> 
     <option>myOption</option> 
    </select> 
    <select name="myDropDownB" id="myDropDownB"> 
     <option>myOption</option> 
    </select> 
    <script> 
    $(response.A).each(function() 
      { 
       var option = $('<option />'); 
       option.attr('value', this.value).text(this.label); 
       $('#myDropDownA').append(option); 
      }); 
    </script> 
    <INPUT type="button" value="Mybutton" onclick="Mybutton" /> 
    </div> 

: (사용 JQuery와 모바일) 예를 들어 : 이 내 문자열 (JSON)입니다 :

var response = [{ 
     "A":"a2", 
     "B":"b2", 
     "C":"c2" 
    }, 
    { 
     "A":"a3", 
     "B":"b3", 
     "C":"c3" 
    }, 
    { 
     "A":"a4", 
     "B":"b4", 
     "C":"c4" 
    }]; 

이 내 코드입니다 옵션 A, myDropDownB를 선택 옵션 B. 으로 선택하면 작동하지 않습니다. 왜?

+0

JSfiddle 아마 때문에'response.A'는 undefined''이다. 'response'는 ** 배열 **입니다. [액세스/처리 (중첩) 객체, 배열 또는 JSON] (http://stackoverflow.com/q/11922383/218196)을 참조하십시오. 또한'.each' 콜백 내부에'this'가 무엇이라고 생각하는지 궁금합니다. 'label'과'value' 속성은 갑자기 어디에서 왔습니까? –

답변

0

$each이 잘못되었습니다. reference

var myDropDownA = $("#myDropDownA"); 
var myDropDownB = $("#myDropDownB"); 
$.each(response, function(index,obj) 
{ 
    //alert(index + ": " + obj.A); 
    myDropDownA.append($("<option />").val(obj.A).text(obj.A)); 
    myDropDownB.append($("<option />").val(obj.B).text(obj.B)); 
}); 

작동 데모를 확인하십시오

+0

고마워요! 도움이되었다. – yoka

+0

최근 업데이트 된 답변을 참조하여 작업 데모 코드를 추가로 분석 할 수 있습니다. 행운을 빈다. – jhyap