Select2 Remote Data не создает / не выбирает параметр динамически - PullRequest
0 голосов
/ 16 июня 2020

Я вызываю URL-адрес, используя Ajax, чтобы получить данные и заполнить их внутри элемента select, который использует Select2 и удаленные данные.

Удаленные данные загружаются абсолютно нормально при поиске внутри select, но с приведенным ниже кодом он, похоже, не создает / не выбирает параметр внутри for l oop.

Консоль показывает правильное значение, возвращенное из вызова Ajax, но это просто не выберите его в элементе выбора

    $.ajax({
        type: "GET",
        url: "/section/tickets?action=get_update_details&seq=" + $(el).attr("id"),
        cache: false,
        dataType: "json",
        success: function(data) {
            if(data.emails.to !== "") {
                for(var i in data.emails.to) {
                    console.log(data.emails.to[i]);
                    var x = new Option(data.emails.to[i], data.emails.to[i], true, true);
                    $("#contacts_to").append(x).trigger('change');
                }
            }
        }
    });

Ответы [ 2 ]

0 голосов
/ 16 июня 2020

Трудно выполнить отладку без полного примера. Однако ваш код, похоже, работает нормально.

См. Эту измененную версию:

  $.ajax({
    type: "GET",
    url: "https://jsonplaceholder.typicode.com/todos/1",
    cache: false,
    dataType: "json",
    success: function(data) {
      console.log(data);
      for (let k in data) {

        var x = new Option(data[k], k, true, true);
        $("#contacts_to").append(x).trigger('change');

      }
    }
  });
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/select2/4.1.0-beta.1/js/select2.min.js"></script>
<select name="" id="contacts_to"></select>
0 голосов
/ 16 июня 2020

Я попытался смоделировать то, чего вы пытаетесь достичь, не могли бы вы указать на проблемную часть?

$(document).ready(function() {
    $('.js-example-basic-single').select2();
    
    const data = ['Remote Data1', 'Remote Data2'];
    
    for(var i in data) {
        var x = new Option(data[i], data[i], true, true);
        $(".js-example-basic-single").append(x).trigger('change');
    }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/select2@4.1.0-beta.1/dist/css/select2.min.css" rel="stylesheet" />
<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-beta.1/dist/js/select2.min.js"></script>

<select class="js-example-basic-single" name="state">
  <option value="AL">Alabama</option>
  <option value="WY">Wyoming</option>
</select>
...