Select2 с Ajax не отправляет запрос

Я использую Select2 версии 4.0.0 и пытаюсь загрузить удаленный JSON с PHP script, который возвращает уже сформированные данные, которые мне нужны. Проблема в том, что силы темноты что-то делают, потому что я просто не могу отправить запрос, нет ошибки, но нет отправленного запроса, он просто так тихо, как дьявол, что я почти плачу!

Я использую LiveScript и Jade как альтернативы JavaScript и HTML, но я переведу здесь.

Во-первых, моя разметка определяет выбираемое поле:

<select id="satan-hates-me"></select>

Затем я могу сделать его похожим на выбираемый элемент:

 $("#satan-hates-me").select2({
    placeholder: "Hail",
    minimumInputLength: 1,
    ajax: { // Here that bad things happen, I mean, don't happen
      url: "http://localhost/os/backend/TestServiceOrder.php?req=getEquipments",
      dataType: "json",
      type: "GET",
      quietMillis: 50,
      data: function(term) { return { term: term } },
      results: function(data) { return data; }
    }
  });

Я выполняю это, завернутый в функцию загрузки, после загрузки страницы выглядит как выбираемый, но не отправляет никаких запросов, а script возвращает мне точно необходимый формат, например

[{id: 1, text: "Sadness"}, {id: 2, text: "Depression"}]

И вот идет. Я могу проектировать компиляторы, но я не могу в мире сделать плагин с Ajax! Может кто-нибудь помочь мне, пожалуйста?

Ответ 1

Наконец-то решила проблему.

<input> не поддерживается в select2 v4

. Вместо этого вы должны использовать элемент <select>

Ответ 2

В моем случае это был общий вызов select2.select2-Elements в нижнем колонтитуле всех моих шаблонов:

$('.select2').select2();

Несмотря на то, что мой выбор для Ajax-Request вообще не имел этого класса (я вызывал его по идентификатору), мне пришлось изменить вышеприведенное на

$('select.select2').select2({theme: 'classic'});

Я думаю, что select2() создает несколько элементов с классом .select2, так что это может помешать

Ответ 3

Только сегодня я начал использовать этот плагин.

Попробуйте заменить это:

data: function(term) { return { term: term } }

:

data: function(term) { return { term: term.term } }

Но в любом случае.. запрос должен быть отправлен, даже если данные переданы некорректно...