Select2 未通过 AJAX 获取数据
Posted
技术标签:
【中文标题】Select2 未通过 AJAX 获取数据【英文标题】:Select2 not getting data via AJAX 【发布时间】:2013-04-12 16:27:37 【问题描述】:我有以下代码,应该使用 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
【问题讨论】:
能否改变json响应结构 【参考方案1】:试试
$('#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
【讨论】:
这是非常有用的示例。经过 4 小时的搜索,我的问题解决了。谢谢 非常感谢!对于 select2.min 版本 3.5.4 非常有用 :)【参考方案2】:除了上面的解决方案,你可以做一件事,而不是返回下面的 json
["label":"Organisation 1","ID":2,"label":"Organisation 2","ID":1]
返回这个
["text":"Organisation 1","id":2,"text":"Organisation 2","id":1]
在查看其他人提出的一些解决方案后遇到了同样的问题并想通了这一点。
【讨论】:
以上是关于Select2 未通过 AJAX 获取数据的主要内容,如果未能解决你的问题,请参考以下文章