使用来自 JSON 的 jquery 或 angularJS 的选项创建多个选择

Create multiple selects with options with jquery or angularJS from JSON

本文关键字:选项 创建 选择 angularJS jquery JSON      更新时间:2023-09-26

我需要帮助。我想根据我从 REST API 获得的数据创建带有选项的动态选择。数据是 JSONObject。如何将这些选择动态注入到我的 html 中。下面是一个示例:

我从 REST API 获得的 JSON:

{
  "Projects":[
          "Project A",
          "Project B",
          "Project C"
         ],
  "Variant":[
          "Variant A",
          "Variant B"
          ],
  "Information":[
            "Info 1",
            "Info 2"
            ],
  "Links":[
        "Link 1",
        "Link 2"]
}

那是我的模板:

<div class="ui-field-contain" id="project-names">
</div>

现在我想使用 jquery 或 angularjs 来生成选择项目、变体、信息和链接,以及他们的选项。

它应该是这样的:

<div class="ui-field-contain" id="project-names">
  <label for="project">Project:</label> 
  <select name="project" id="project" data-native-menu="false">
    <option value="Project A">Project A</option>
    <option value="Project B">Project B</option>
    <option value="Project C">Project C</option>
  </select> 
  <label for="variant">Variant:</label> 
  <select name="variant" id="variant" data-native-menu="false">
    <option value="Variant A">Variant A</option>
    <option value="Variant B">Variant B</option>
  </select>
  <label for="Information">Information:</label> 
  <select name="Information" id="Information" data-native-menu="false">
    <option value="Info A">Info A</option>
    <option value="Info B">Info B</option>
  </select> 
  <label for="select-1">Link:</label> 
  <select name="Link"   id="Link" data-native-menu="false">
    <option value="Link A">Link A</option>
    <option value="Link B">Link B</option>
  </select>
</div>

这可能吗?

谢谢。

编辑到目前为止我的代码: var $htmlProjectNames = $("#project-names"); $btnGetProjects.on('click', function() {

    $.ajax({
        type : 'GET',
        url: '/RestFulApi/api/v1/mcd/get-projects',
        datatype : "json",
        success : function(data) {
            $.each(data, function(prefix, project) {
                $htmlProjectNames.append(
                        '<label for' + perfix +'>' + prefix +'</label>'n'+
                        '<select name="'+prefix+ 'id="' + prefix +'"' + 'data-native-menu="false">'

                );
            });
        }
    });
});

尝试:

$.ajax({
        type : 'GET',
        url: '/RestFulApi/api/v1/mcd/get-projects',
        datatype : "json",
        success : function(data) {
            $.each(data, function (key, values) {
                var template = '<label for="' + key.toLowerCase() + '">' + key + ':</label>' +
                            '<select name="' + key.toLowerCase() + '" id="' + key + '" data-native-menu="false">';
                for(var i=0; i<values.length; i++){
                    template = template + '<option value="' + values[i] + '">' + values[i] + '</option>';
                }
                template = template + '</select>';
                $("div#project-names").append(template);
            });
        }
    });