如何加载JSON数据以与select2插件一起使用它

我想为我的项目使用select2插件。 我按照这个例子,但它对我不起作用。

JSON输出

[ {"ime":"BioPlex TM"}, {"ime":"Aegis sym agrilla"}, {"ime":"Aegis sym irriga"}, {"ime":"Aegis sym microgranulo"}, {"ime":"Aegis sym pastiglia"}, {"ime":"Agroblen 15816+3MgO"}, {"ime":"Agroblen 18816+3MgO"}, {"ime":"Agrobor 15 HU"}, {"ime":"Agrocal (Ca + Mg)"}, {"ime":"Agrocal (Ca)"}, {"ime":"Agrogold"}, {"ime":"Agroleaf Power 12525+ME"}, {"ime":"Agroleaf Power 151031+ME"}, {"ime":"Agroleaf Power 202020+ME"}, {"ime":"Agroleaf Power 311111+ME"}, {"ime":"Agroleaf Power Ca"}, {"ime":"Agrolution 14714+14 CaO+ME"}, {"ime":"Agrovapno dolomitno"}, {"ime":"Agrovit HSF"}, {"ime":"Agrovit P"}, {"ime":"Agrozin 32 T"}, {"ime":"Albatros Hydro"}, {"ime":"Albatros Sprint"}, {"ime":"Albatros Standard"}, {"ime":"Albatros Universal"}, {"ime":"Algaren"}, {"ime":"AlgoVital ? Plus"}, {"ime":"Amalgerol PREMIUM"}, {"ime":"Amcolon \/ Novalon"}, {"ime":"Amcopaste"}, {"ime":"Aminosprint N8"}, {"ime":"AminoVital"}, {"ime":"Ammonium nitrate 33.5%"}, {"ime":"Ammonium nitrate with calcium sulfate"}, {"ime":"Ammonium sulfate"} ] 

脚本

 function formatDjubrivo(data) { return data; } function formatDjubrivo1(data) { return data.ime; $( "#inputs" ).change(function() { console.log('prolazi klik'); var t = $( this ).val(); console.log(t); if (t=='djubrivo') { console.log('prolazi klik if'); $('#stavka').select2({ ajax: { dataType : "json", url : "djubrivo.php", results : function (data) { return {results: data}; } }, formatResult : formatDjubrivo }); }else { console.log('nije djubrivo'); } }); 

HTML

 
Vrsta Inputa djubrivo pesticidi kultura voda
Stavka

这是我使用console.log测试代码时的结果:

Select2:AJAX结果未在响应的results键中返回数组。

我哪里弄错了?

您似乎正在使用Select2 4.0,包括您提供给示例的链接以及您收到的错误消息。 但是,您的代码是为以前版本的Select2编写的。

如果您想继续使用Select2 4.0:

(1)将results ajax选项更改为processResults

(2)更改processResults函数,使其返回的对象的results属性是一个对象数组,其中每个对象都有一个id和一个text属性。 一种方法是使用$.map()函数从ajax调用返回的数组创建一个新数组。

 processResults: function (data) { return { results: $.map(data, function(obj) { return { id: obj.ime, text: obj.ime }; }) }; } 

您还可以删除formatResult选项。

(3)使用元素,而不是元素。

  

的jsfiddle

试试这个 :

 $.getJSON("djubrivo.php", function (json) { $("#inputs").select2({ data: json, width: "180px" }); }); 

示例json:

  {id:0,text:"enhancement"}, {id:1,text:"bug"}, {id:2,text:"duplicate"}, {id:3,text:"invalid"}, {id:4,text:"wontfix"}