我想为我的项目使用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 :
<div class="col-md-2" style="padding-right:0px;"> Vrsta Inputa <select id="inputs" name="inputs" class="form-control js-example-responsive"> <option value="djubrivo">djubrivo</option> <option value="pesticidi">pesticidi</option> <option value="kultura">kultura</option> <option value="voda">voda</option> </select> </div> <div class="col-md-2" style="padding-right:0px;"> Stavka <input id="stavka" name="stavka" class="form-control js-example-responsive"> </div>
这是我使用console.log以下代码测试代码时的结果:
console.log
Select2:AJAX结果未results在响应键中返回数组。
results
我在哪里弄错了?
从提供的示例链接到所收到的错误消息,您似乎都在使用Select2 4.0。但是,您的代码是为Select2的早期版本编写的。
如果要继续使用Select2 4.0:
(1)将resultsajax选项更改为processResults。
processResults
(2)更改processResults函数,results使其返回的对象的属性为对象数组,其中每个对象均具有id和text属性。一种方法是使用该$.map()函数从ajax调用返回的数组中创建一个新数组。
id
text
$.map()
processResults: function (data) { return { results: $.map(data, function(obj) { return { id: obj.ime, text: obj.ime }; }) }; }
您也可以摆脱该formatResult选项。
formatResult
(3)使用<select>元素而不是<input>元素。
<select>
<input>
<select id="stavka" name="stavka" class="form-control js-example-responsive"></select>
jsfiddle