当前位置: 首页 > 面试题库 >

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

於宾白
2023-03-14
问题内容

我想为我的项目使用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以下代码测试代码时的结果:

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

我在哪里弄错了?


问题答案:

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

如果要继续使用Select2 4.0:

(1)将resultsajax选项更改为processResults

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

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

您也可以摆脱该formatResult选项。

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

<select id="stavka" name="stavka" class="form-control js-example-responsive"></select>

jsfiddle



 类似资料:
  • 问题内容: 我的Select2 3.4.5无法使用JSON数据。 这是我在HTML上的输入框: …还有我的JavaScript 我使用Laravel 4制作了一个API,每当在文本框中键入任何内容时,该API都会返回一个值。 如果在文本框中键入“ test”,则结果如下: 我无法将结果添加到我的Select2下拉列表中。我认为并且正在引起问题,因为我不知道应该在上面放置什么参数。我不知道从何处获取

  • 我的Select2 3.4.5不适用于JSON数据。 这是我在超文本标记语言上的输入框: ...和我的JavaScript 我用Laravel 4制作了一个API,每当我在文本框中键入任何内容时,它都会返回一个值。 如果我在输入框上键入“test”,结果如下: 我无法将结果添加到Select2下拉列表中。我认为是formatSelection和formatResult导致了这个问题,因为我不知道应

  • 在此示例中:https://jsfiddle.net/wqd4ebyn/2/: 我正在尝试使用ajax获取远程数据并使用当前选项预加载列表。除非我删除了ajax,否则它不起作用: 我的列表太大了。我想要的是列出一些非常常见的选项,其余的由ajax列出。当前的实现确实允许两者兼而有之,静态选项或动态选项。我需要两者。

  • 问题内容: 我正在使用select2插件(v4),并使用ajax加载他的选项。 如果我第一次打开选择输入,将加载数据。当我再次打开选择时,将重新加载相同的数据。 有什么方法可以防止这种“重新加载”数据?我的意思是,如果我只是打开select2并且先前已加载选项,则我不想再次加载。 这是我当前的代码: 问题答案: 由于您正在使用select2_v.4,因此必须使用(并且方法在V.4.0中已弃用)以下

  • 问题内容: 我正在尝试使用Text Finder插件编写jenkinsfile ,但我不知道它是如何工作的。 这是我的代码: 问题答案: 正如@mghicks已经提到的,并不是每个插件都支持Jenkins管道。在这种情况下,Text Finder插件不支持它。例如,您可以为此编写自己的groovy函数: 例如: 我们正在调用filterLogs函数,并提供参数“ ERROR”(在您的日志中搜索ER

  • 我想将ListView与其他小部件一起使用,但我不能。当我将容器用于ListView时,我不能查看任何其他小部件。我该怎么做?