在动态选择元素中使用JSON变量

时间:2012-11-04 14:38:55

标签: jquery

我有这个JSON字符串(来自DataSet,1列,几行 - 示例中仅显示2) -

{"Tables":[{"Rows":[{"Column1":"UserNumer1"},{"Column1":"UserNumber2"}]}]}

如何在动态填充的select value

中使用这些值
$('<option>').val('UserNumer1').text('UserNumer1').appendTo('#selectID');

我想追加所有值,如果JSON字符串有10行(在这种情况下是用户)我希望jquery将所有行追加到我的selectID。被告知最好appendTo一次而不是进行交互。

谢谢!

根据答案进行编辑。

为了快速测试,我设置了我的页面加载。

jsonString = GetParsedData();

现在,jQuery脚本。

$(function () {
        var obj = <%=jsonString%>;
        var html = "";
        for (var i = 0; i < obj.Tables.length; i++) {
            html += '<option value="' + obj.Tables[i].Column1 + '"> ' + obj.Tables[i].Column1 + '</option>';
        }
        $(html).appendTo('#selectID');
    });

列表没有填充,所以我尝试了firebug,在断点后我得到了变量html的结果

"<option value="undefined"> undefined</option>"

var obj没问题

{"Tables":[{"Rows":[{"Column1":"UserName1"},{"Column1":"UserName2"}]}]};

我在这里遗漏了什么吗?非常感谢。

除了de“undefined”这是错误的,它甚至没有附加它。菜单列表为空。

1 个答案:

答案 0 :(得分:3)

 var table;   for (var i=0; i< resp.Tables.length; i++){
     table = resp.Tables[i];
     for(var j=0;j<table.Rows.length; j++ ){
          $('<option>').val( table.Rows[j].Column1).text(table.Rows[j].Column1).appendTo('#selectID');
    }
    }

我建议你更快捷。

var html = "";
    for (var i=0; i< resp.Tables.length; i++){
    table = resp.Tables[i];
     for(var j=0;j<table.Rows.length; j++ ){
         html +='<option value="'+  table.Rows[j].Column1 +'"> '+  table.Rows[j].Column1 +'</option>';
    }
    }
$(html).appendTo('#selectID');