我有以下代码,应该使用Select2
通过AJAX获取数据$('#Organisation').select2({
ajax: {
url: AppURL + 'Organisations/Manage/SearchByName/',
dataType: 'json',
quietMillis: 100,
data: function (term) {
return {
term: term
};
},
results: function (data) {
return {
results: data
};
}
}
});
如果我在搜索“O”时使用Web Inspector查看请求,我会得到:
[{"label":"Organisation 1","ID":2},{"label":"Organisation 2","ID":1}]
任何想法我做错了什么?我在结果函数中假设有些不正确的东西。
我得到的错误是:Uncaught TypeError: Cannot call method 'toUpperCase' of undefined
答案 0 :(得分:35)
尝试
$('#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
答案 1 :(得分:5)
除了上述解决方案之外,您可以做一件事,而不是返回关注json
[{"label":"Organisation 1","ID":2},{"label":"Organisation 2","ID":1}]
返回此
[{"text":"Organisation 1","id":2},{"text":"Organisation 2","id":1}]
遇到了同样的问题,并在查看了其他人提出的一些解决方案后想出了这个问题。