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}]
столкнулся с одной и той же проблемой и понял это после рассмотрения нескольких решений, предложенных другими.