首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何加载JSON数据以便与select2插件一起使用

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

Stack Overflow用户
提问于 2015-02-05 22:14:20
回答 2查看 50.9K关注 0票数 16

我想在我的项目中使用select2插件。我以this为例,但它对我不起作用。

JSON输出

代码语言:javascript
复制
[
    {"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"}
]

脚本

代码语言:javascript
复制
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');
    }
});

代码语言:javascript
复制
<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测试代码时的结果。

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

我在哪里弄错了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-02-05 22:29:05

从您提供的链接到示例和接收到的错误消息来看,您都在使用Select2 4.0。但是,您的代码是为Select2的早期版本编写的。

如果您想继续使用Select2 4.0:

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

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

代码语言:javascript
复制
processResults: function (data) {
    return {
        results: $.map(data, function(obj) {
            return { id: obj.ime, text: obj.ime };
        })
    };
}

您还可以去掉formatResult选项。

(3)使用<select>元素,而不是<input>元素。

代码语言:javascript
复制
<select id="stavka" name="stavka" class="form-control js-example-responsive"></select>

jsfiddle

票数 58
EN

Stack Overflow用户

发布于 2015-06-05 00:30:26

试试这个:

代码语言:javascript
复制
$.getJSON("djubrivo.php", function (json) {
      $("#inputs").select2({
         data: json,
         width: "180px"
      });
 });

示例json:

代码语言:javascript
复制
    {
      results:{
        {id:0,text:"enhancement"},
        {id:1,text:"bug"},
        {id:2,text:"duplicate"},
        {id:3,text:"invalid"},
        {id:4,text:"wontfix"}
      }
    }
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28355083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档