我正在使用 select2 选择框来填充和显示一些服务器数据。其中大部分工作正常,因为我能够获得结果并填充组合框。但是当我在搜索框中键入时,选择不会缩小最接近的匹配项。
我发现问题是因为后端 URL 不支持根据提供的字符串进行搜索,而 select2 根据用户输入的文本不断向后端发出多个搜索请求。遗留后端代码一次性返回结果,该结果第一次填充到组合框中。
我的问题是,如何让选择框专注于最接近的匹配结果,而无需进行多次 Ajax 调用。我希望搜索发生在已经获取的结果中。
感谢任何帮助我解决此问题的人。
我的 ajax 调用如下所示,如果这有帮助...
select2: {
placeholder: 'Select Next Plan Id',
allowClear: true,
id: function (item) {
return item.id;
},
ajax: {
type: 'GET',
dataType: "jsonp",
url: "http://172.16.7.248:8480/app/gui?action=1&type=11",
data: function (term, page) {
return { search: term };
},
results: function (data, page) {
return { results: data.aaData };
},
success : function(data, status, xhr) {
var html = "<option value=''>None</option>";
$.each(data.aaData, function(i, item) {
html += "<option data=" + JSON.stringify(item.id) + " value=" + item.id + "'>" + item.id + "</option>";
});
$('#nextplanid').html(html);
self.prop('data-loaded', 'true');
},
error : function(data, status, xhr) {
}
},
formatResult: function (item) {
return item.id;
},
formatSelection: function (item) {
return item.id;
},
initSelection: function (element, callback) {
return $.get('/getText', { query: element.val() }, function (data) {
callback(data);
});
}
},