2014-05-09 168 views
1

我只想通過JSON填充組合框。 (使用jQuery Mobile的) 例如: 這是我的字符串(JSON):從JSON填充組合框(字符串)

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

,這是我的代碼:

...

<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> 

我想myDropDownA是選擇選項A,myDropDownB將成爲選擇選項B. 並且它不起作用。爲什麼?

+0

可能是因爲'response.A'是'undefined'。 'response'是一個**數組**。請參見[訪問/進程(嵌套)對象,數組或JSON](http://stackoverflow.com/q/11922383/218196)。我也想知道你認爲'this'在'.each'回調中。在哪裏做'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)); 
}); 

工作演示:JSfiddle

+0

謝謝!這很有幫助。 – yoka

+0

您可以參考我的最新更新答案,進一步分解工作演示代碼。祝你好運,享受。 – jhyap