服务器期望select2(v4.0.3)的数据结构是什么,应该如何处理?
问题在官方常见问题here上提出,但没有答案。
我已尝试过几种数据结构变体,但基于此tutorial和此jsFiddle,假设应从服务器返回的是一个对象/数组的列表/数组,例如:
matches = [{"id":"1", "tag":"Python"},{"id":"2", "tag":"Javascript"},{"id":"3", "tag":"MongoDB"}]
我已尝试使用以下Javascript格式:
$("#my_select").select2({
ajax: {
url: "/tag_search",
dataType: 'json',
delay: 250,
data: function (params) {
return {
q: params.term // search term
};
},
processResults: function (data) {
return {
results: data.matches
};
},
cache: true
},
minimumInputLength: 2,
tags: true,
tokenSeparators: [",", " "],
maximumSelectionLength: 5
});
Firebug搜索Py
的结果:
搜索区域只显示:
我期待所有比赛都显示在搜索区域下方的下拉列表中。
答案 0 :(得分:0)
对我有用的解决方案:
重命名json密钥(必须为text
),因此服务器响应为:
[{"text": "Python", "id": 1}]
(在遇到this document之后)。
我也只是从服务器返回列表本身,而不是使列表成为dict值。
<强>的Javascript 强>
$("#my_select").select2({
ajax: {
url: "/tag_search",
dataType: 'json',
delay: 250,
data: function (params) {
return {
q: params.term // search term
};
},
processResults: function (data) {
return {
results: data
};
},
cache: true
},
minimumInputLength: 2,
tags: true,
tokenSeparators: [",", " "],
maximumSelectionLength: 5
});