Select2 не получает данные через AJAX

У меня есть следующий код, который должен получать данные через AJAX, используя Select2

$('#Organisation').select2({
    ajax: {
        url: AppURL + 'Organisations/Manage/SearchByName/',
        dataType: 'json',
        quietMillis: 100,
        data: function (term) {
            return {
                term: term
            };
        },
        results: function (data) {
            return {
                results: data
            };
        }
    }
});

Если я посмотрю запрос с помощью Web Inspector при поиске "O", я получаю:

[{"label":"Organisation 1","ID":2},{"label":"Organisation 2","ID":1}]

Любые идеи, что я делаю неправильно? Я бы предположил что-то неправильное в функции результатов.

Ошибка, которую я получаю: Uncaught TypeError: Cannot call method 'toUpperCase' of undefined

Ответ 1

Try

$('#Organisation').select2({
    ajax: {
        url: 'data.json',
        dataType: 'json',
        quietMillis: 100,
        data: function (term) {
            return {
                term: term
            };
        },
        results: function (data) {
          var results = [];
          $.each(data, function(index, item){
            results.push({
              id: item.ID,
              text: item.label
            });
          });
          return {
              results: results
          };
        }
    }
});

Демо: Plunker

Ответ 2

Помимо вышеприведенного решения, вы можете сделать одно, а не возвращать json

[{"label":"Organisation 1","ID":2},{"label":"Organisation 2","ID":1}]

верните это

[{"text":"Organisation 1","id":2},{"text":"Organisation 2","id":1}]

столкнулся с одной и той же проблемой и понял это после рассмотрения нескольких решений, предложенных другими.