从 JSON 填充 select 列表

populating a select list from JSON

我收到了一些 JSON 数据,如下所示:

{
"COLUMNS": [
    "COMP_ID",
    "COMP_NAME",
    "FIRST_NAME",
    "LAST_NAME",
    "EMAIL_ADDRESS"
],
"DATA": [
    [
        68,
        "Comp Name 1",
        "Nicole ",
        "Lastname ",
        "a@a.com"
    ],
    [
        173,
        "Comp Name 2",
        "Megan",
        "Lastname ",
        "b@a.com "
    ],
    [
        175,
        "Comp Name 3",
        "Elizabeth ",
        "Lastname ",
        "c@a.com "
    ],
    [
        244,
        "Comp Name 4",
        "Kelly ",
        "Lastname ",
        "d@a.com "
    ],
    [
        266,
        "Comp Name 5",
        "Andrea ",
        "Lastname ",
        "e@a.com "
    ]
]
}

我正在尝试从结果集中创建一个 select 列表。应该是:

  <select name="selectCompany" id="selectCompany">
    <option value="68">Comp Name 1</option>
    <option value="173">Comp Name 2</option>
    <option value="175">Comp Name 3</option>
    <option value="244">Comp Name 4</option>
    <option value="266">Comp Name 5</option>
 </select>

在我的 ajax 调用中,我使用的是:

 success: function (result) {
     var compData = $.parseJSON(result);
     $('#selectCompany').attr('enabled', 'true');
     $.each(compData, function() {
        $('#selectCompany').append(
            $("<option></option>").text($.trim(compData.DATA[0][0])).val($.trim(compData.DATA[0][1]))
                                    );
                                });
                            },

如何正确循环数据并填充 select?

试试这个

    success: function (result) {
    var compData = $.parseJSON(result);
    $('#selectCompany').attr('enabled', 'true');
         var opts = ""
         $.each(compData, function() {
             opts.concat("<option value='"+$.trim(compData.DATA[0[0])+"'>"+$.trim(compData.DATA[0][1])+"</option>"
         });
    $('#selectCompany').append(opts);
},

JSFIDDLE 演示 -> http://jsfiddle.net/wqzuxdpy/

使用.each()

迭代compData.DATA
$.each(compData.DATA, function () {
    var $option = $('<option/>').text(this[1]).val(this[0]);
    $('#selectCompany').append($option);
});