我经常看到的示例似乎不是最优的,因为它涉及到连接字符串,这似乎不是jQuery。它通常是这样的:

$.getJSON("/Admin/GetFolderList/", function(result) {
    for (var i = 0; i < result.length; i++) {
        options += '<option value="' + result[i].ImageFolderID + '">' + result[i].Name + '</option>';
    }
});

有没有更好的办法?


当前回答

您可以从SQL端创建选项(联合) 并返回为字符串,并将该字符串附加到下拉列表 您可以在代码中删除循环。 即,如果你使用任何后端,如SQL server 您可以使用coalesce创建options标签 即你将得到一个包含整个选项的字符串

然后您可以从后端返回整个字符串,并将其附加到您的下拉列表中

其他回答

function generateYears() {
                    $.ajax({
                        type: "GET",
                        url: "getYears.do",
                        data: "",
                        dataType: "json",
                        contentType: "application/json",
                        success: function(msg) {
                            populateYearsToSelectBox(msg);
                        }
                    });
}

function populateYearsToSelectBox(msg) {
  var options = $("#selectYear");
$.each(msg.dataCollecton, function(val, text) {
   options.append(
        $('<option></option>').val(text).html(text)
    );
});
}

最快的方法是:

 $.getJSON("/Admin/GetFolderList/", function(result) {
        var optionsValues = '<select>';
        $.each(result, function(item) {
            optionsValues += '<option value="' + item.ImageFolderID + '">' + item.Name + '</option>';
        });
        optionsValues += '</select>';
        var options = $('#options');
        options.replaceWith(optionsValues);
    });

根据这个链接是最快的方法,因为在进行任何类型的DOM插入时,都将所有内容包装在一个元素中。

您可以从SQL端创建选项(联合) 并返回为字符串,并将该字符串附加到下拉列表 您可以在代码中删除循环。 即,如果你使用任何后端,如SQL server 您可以使用coalesce创建options标签 即你将得到一个包含整个选项的字符串

然后您可以从后端返回整个字符串,并将其附加到您的下拉列表中

这是我做的一个关于change的例子,我在second select中获得了first select的子元素

jQuery(document).ready(function($) {
$('.your_select').change(function() {
    $.ajaxSetup({
        headers:{'X-CSRF-TOKEN': $("meta[name='csrf-token']").attr('content')}
    });

    $.ajax({
        type:'POST',
        url: 'Link',
        data:{
          'id': $(this).val()
        },
        success:function(r){
          $.each(r, function(res) {
                console.log(r[res].Nom);
                 $('.select_to_populate').append($("<option />").val(r[res].id).text(r[res].Nom));
            });
        },error:function(r) {
          alert('Error');
        }
    });
});

});在这里输入代码

我发现这是从jquery网站工作

$.getJSON( "/Admin/GetFolderList/", function( data ) {
  var options = $("#dropdownID");
  $.each( data, function(key, val) {
    options.append(new Option(key, val));
  });
});