如何加载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"}