繁体   English   中英

从JSON选择下拉列表中的jQuery追加选项

[英]jQuery append option in select dropdown from json

$.getJSON('js/countries.json', function (data) {
            $.each(data, function (i=0,name,code) {
                // console.log(data[i]['name'] + '=' + data[i]['code']);
                $('#ppState').append($('<option>', {
                    value: data[i]['code'],
                    text: data[i]['name']
                }));
            });
        });

谁能告诉我为什么此代码不起作用? 它不会在我的选择html输出中附加任何选项。 控制台工作正常。

HTML代码:

<select id="ppState" name="ppState">
    <option value="">Choose Country</option>
</select>

JSON文件:

[
  {
    "name": "Afghanistan",
    "code": "AF"
  },
  {
    "name": "Åland Islands",
    "code": "AX"
  },
  {
    "name": "Albania",
    "code": "AL"
  }

]
enter code here

编辑:

它将选项添加到jQuery选择器找到的第一个select元素中。 但是我在html中有几个相同的select元素。 如何针对所有目标?

您的jQuery每个函数和外观选项的格式不正确。

// yours.......
$.each(data, function (i=0,name,code) {
                // console.log(data[i]['name'] + '=' + data[i]['code']);
                $('#ppState').append($('<option>', {
                    value: data[i]['code'],
                    text: data[i]['name']
                }));
            });


// should
$.each(data, function (item) {
    var opt = $('<option></option>');

    opt.val(item.code);
    opt.text(item.name);

    $('#ppState').append($(opt);
  });

更新资料

$.each(data, function (item) {
    $('#ppState').append($('<option value="' +item.code+ '">' +item.name+ '</option>'));
  });

您的代码对我来说效果很好。

下拉列表中的奥兰群岛字符错误,因此我不得不重新保存JSON文件,从ANSI更改为UTF-8。

它将选项添加到jQuery选择器找到的第一个select元素中。 但是我在html中有几个相同的select元素。 如何针对所有目标?

如果您重复使用了相同的id属性,则您的HTML无效,并且jQuery将仅找到第一个(如您所见)。

为多个元素赋予相同的name属性有效的,因此,如果所有元素都具有name="ppState"则可以通过以下方式进行选择:

$('select[name="ppState"]').append(...

或者,您可以向每个元素添加一个通用类:

<select id="ppState" name="ppState" class="state">

$('select.state').append(...

我希望这可以帮助您附加

我在Spring Boot MVC中使用的这些代码

JSON数据

[{"name":"Afghanistan","code":"af"},
{"name":"Albania","code":"al"},
{"name":"Algeria","code":"dz"}]

jQuery代码

var jsonData = '${restData}';
var obj = JSON.parse(jsonData);
for (i in obj) {
    $('#selectList').append(new Option(obj[i].name, obj[i].code));

}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM