init完成后,使用JSON填充select2

我正在尝试使用JSON数组填充select2元素; 但我无法得到它。

我有下一个数组:

data = [{"id":"Foo","text":"Foo"},{"id":"Bar","text":"Bar"}] 

我将select2初始化如下:

 $("#selectElement").select2(); 

我使用下一个代码填充:

 $('#selectElement').select2('data', data, true); 

但不起作用,我不知道为什么。 有人可以帮帮我吗?

编辑:我需要在select2的init之后填充(我从AJAX接收JSON)

我的意图是使用其他select2的AJAX搜索的JSON填充我的问题的select2。

一切都很好,除了populate(我在第一个格式的Selectiom方法中得到了这个JSON,但我不知道我可以用这个来填充第二个select2)

我看到你的代码和select2的代码之间存在一些差异

你的数据:

 var data = [{"id":"Foo","text":"Foo"},{"id":"Bar","text":"Bar"}]; 

应该:

 var data = [{id:"Foo", text:"Foo"},{id:"Bar", text:"Bar"}] 

您的人口代码:

 $('#selectElement').select2('data', data, true); 

应该:

 $('#selectElement').select2({data: data}); 

Select2的示例

 var data = [ { id: 0, text: 'enhancement' }, { id: 1, text: 'bug' }, { id: 2, text: 'duplicate' }, { id: 3, text: 'invalid' }, { id: 4, text: 'wontfix' } ]; $(".js-example-data-array").select2({ data: data });  

我刚刚在select2列表中发布了一个类似的问题,然后又回到了墙上。 这就是我想出的:(“破坏”是帮助的提示)。 首先,我清空选择,然后重置它。

  $("#id_category").on('change', function(){ var cat = $(this).val(); var url = '/breeds/lookup/?q='+cat; $.get(url, function(d){ var idb = $("#id_breed").empty(); idb.select2({data: d}); }, "json"); }); 
  $('#selectElement').select2({ minimumInputLength: 1, ajax: { url: '@Url.Action("Search", "Home")', dataType: 'json', data: function(params) { return { ad: params.term }; }, processResults: function(data) { return { results: $.map(data, function(obj) { return { id: obj.Id, text: obj.Ad + " " + obj.Soyad }; }) }; } }); 

如果您尝试在默认情况下使用预加载的JSON显示下拉列表,那么当您单击字段时,您希望下拉并显示填充数据,而无需键入单个字母,请设置:

minimumInputLength:0

并且像一个魅力。 我希望这解决了你的问题,因为它确实是我的:)