(首先,这是第一次提交者的道歉,因为我太过教练而无法将文档翻译成工作解决方案而产生的问题。希望有人会对我表示同情:))
基本上我有以下简单的基于ajax的select2输入字段工作:
$(document).ready(function () {
var allUsersUrl = '/cmd/match_list/usrname';
$('#username').select2({
placeholder: 'Enter username',
minimumInputLength: 3,
allowClear: true,
dropdownAutoWidth: true,
ajax: {
quietMillis: 150,
url: allUsersUrl,
dataType: 'json',
data: function (term, page, context) {
return {
fullstr: "n",
fromldap: "y",
exact: "n",
string: term,
};
},
results: function (data, page) {
return { results: data.Results };
}
}
});
}
.
.
.
<input id="username" name="username">
...但由于这涉及相对缓慢且昂贵的后端LDAP查询,我希望在查找之后收到的任何后续按键搜索初始结果,而不是启动另一个全新(但非常相似)的结束查找。
例如,当我在字段中键入“smi”时,会显示52个匹配的候选名单。当我按't'时,我想在候选名单中寻找'smit',而不是按照目前的情况进行另一次后端查找。
文档讨论了一个与我的问题非常相关的“context”对象,但我似乎无法从那里跳到一个有效的解决方案,到目前为止我找不到任何例子使用此对象的其他人。
如果这只是本论坛中不属于的基本内容,我们将非常感激地收到任何建议,并再次道歉。提前谢谢。
答案 0 :(得分:0)
查看您引用的上下文文档,它表示上下文可用于分析一个搜索词的结果,并且当更改搜索词时删除上下文对象。
因为你正在处理对ldap的慢速api调用,我怀疑你必须引入一个缓存层。一种简单的方法是将ldap结果存储在数据库或memcache键值对中的ldapcache表中。
然后你可以重复使用'smi'的响应几分钟。