javascript
  • jquery
  • json
  • 2011-07-06 52 views 2 likes 
    2

    我有一个从JSON(JSONP)使用jQuery获取的对象数组。JavaScript Array对象到下拉列表

    我需要使用HTML下拉菜单显示这些数据。

    当前代码:

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script> 
    <script type='text/javascript'> 
        $.getJSON('remote-json-proxy.php?lang=en&callback=?', function(data){ 
    
        console.log(data); 
    
    
        }) 
    </script> 
    

    我如何把这个data变量,它是一个对象的数组使用HTML下拉列表中显示?

    对象数组看起来像这样

    Object 
    lines: Array[10] 
    0: Object 
        line: "COLOMBO - BADULLA" 
    1: Object 
    2: Object 
    3: Object 
    4: Object 
    5: Object 
    6: Object 
    7: Object 
    

    JSON文件

    ({"lines":[{"line":"COLOMBO - BADULLA"},{"line":"COLOMBO - MATALE"},{"line":"COLOMBO - PUTTLAM"},{"line":"COLOMBO - THANDIKULAM"},{"line":"COLOMBO - TALAIMANNAR"},{"line":"COLOMBO - BATTICALOA"},{"line":"COLOMBO - TRINCOMALEE"},{"line":"COLOMBO - MATARA"},{"line":"COLOMBO - AVISSAWELLA"},{"line":"COLOMBO - MIHINTALE"}]}); 
    

    回答

    3

    这应该工作:

    $(document).ready(function() { 
        var oDDL = $("<select>"); 
        $.getJSON('remote-json-proxy.php?lang=en&callback=?', function(data) { 
         $.each(data.lines, function(i, item) { 
          oDDL.append('<option>' + item.line + '</option>'); 
         }); 
        }); 
        $("body").append(oDDL); 
    }); 
    

    正如你可以看到,它的建设下拉列表对象和在JSON中为每个项目添加options阵列。

    注意:每个JSON响应是不同的,data.linesitem.line只匹配此特定情况下的JSON格式。

    +0

    它给出了一个错误,说'长度'没有定义 – Sudantha

    +0

    究竟是什么'remote-json-proxy.php'返回?你能举个例子吗? –

    +0

    嗨我已更新与细节检查它的问题,谢谢:-) – Sudantha

    1

    你首先必须建立在你的HTML a元素,如果你没有一个:

    <select id='myselect'></select> 
    

    然后,在你的js,假设你有属性.valueŸ.caption每件你会怎么做:

    $.getJSON('remote-json-proxy.php?lang=en&callback=?', function(data){ 
        for(var i=0; i<data.length; i++){ //Traverse the data array 
         var value = data[i].value; 
         var text = data[i].caption; 
         $('<option/>').val(value).text(text).appendTo('#myselect'); 
        }; 
    }); 
    

    就是这样。希望这可以帮助。干杯

    +0

    没有错误和dosent工作对我来说:o – Sudantha

    相关问题