(首先,对于由于我太菜鸟而无法将文档转换为有效解决方案而产生的问题,我向第一次提交者道歉。希望有人会可怜我:) )
基本上,我有以下简单的基于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">
...but由于这涉及到相对缓慢和昂贵的后端LDAP查询,我希望在查找之后收到的任何后续按键都可以搜索初始结果,而不是触发另一个全新的(但非常相似的)后端查找。
例如,当我在字段中键入'smi‘时,将显示52个匹配项的候选列表。然后当我按下't‘时,我想在候选列表中查找'smit’,而不是像现在这样做另一个后端查找。
文档中提到了一个听起来与我的问题非常相关的'context‘对象,但我似乎就是不能从它跳到一个有效的解决方案,到目前为止,我还没有找到任何其他人使用这个对象的例子。
我们将非常感谢您的建议,如果这只是一些不属于本论坛的基本内容,我们将再次向您道歉。提前谢谢。
发布于 2014-04-08 11:16:24
查看您引用的上下文文档,可以看到上下文可用于对来自一个搜索词的结果进行分页,并且当搜索词发生更改时,上下文对象将被删除。
由于您正在处理对ldap的缓慢api调用,我怀疑您必须引入一个缓存层。一种简单的方法是将ldap结果存储在数据库的ldapcache表中或memcache键值对中。
然后当您可以在几分钟内重用'smi‘的响应时。
https://stackoverflow.com/questions/21579991
复制相似问题