Select2 возвращает TypeError: данные не определены

1

Я пытаюсь заставить Select2 работать с Rails. У меня есть конечная точка API, но я получаю сообщение TypeError: data is undefined в моей консоли, поэтому поля выбора не заполняются.

Мой код выглядит так:

$(document).ready(function() {
  return $('#form_emails').select2({
    placeholder: 'User list',
    minimumInputLength: 3,
    ajax: {
      url: '/api/s/users',
      dataType: 'json',
      quietMillis: 250,
      data: function(term) {
        return { q: term };
      },
      results: function(data) {
        var results;
        results = [];
        $.each(data, function(idx, item) {
          results.push({
            'id': item.id,
            'text': item.first_name + ' ' + item.last_name
          });
        });
        return { results: results };
      }
    }
  });
});

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

  • 2
    попробуйте использовать processResults: function(data) { вместо results: function(data) { .
Теги:
jquery-select2

1 ответ

1
Лучший ответ

Согласно документации Select2, функция, в которой вы можете преобразовать данные из запроса Ajax, называется processResults, а не results.

См. Https://select2.org/data-sources/ajax#transforming-response-data

Поэтому правильный код должен быть:

$(document).ready(function() {
  return $('#form_emails').select2({
    placeholder: 'User list',
    minimumInputLength: 3,
    ajax: {
      url: '/api/s/users',
      dataType: 'json',
      quietMillis: 250,
      data: function(term) {
        return { q: term };
      },
      processResults: function(data) {
        var results;
        results = [];
        $.each(data, function(idx, item) {
          results.push({
            'id': item.id,
            'text': item.first_name + ' ' + item.last_name
          });
        });
        return { results: results };
      }
    }
  });
});
  • 0
    Спасибо, это сработало с несколькими правками!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню