select2期望从服务器获取什么数据结构以及如何处理?

时间:2016-07-27 14:33:18

标签: jquery-select2-4

服务器期望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的结果:

enter image description here

搜索区域只显示:

enter image description here

我期待所有比赛都显示在搜索区域下方的下拉列表中。

1 个答案:

答案 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
});