我在我的搜索框上使用jQuery.autocomplete(1.02),我想要精确的字符串和子字符串匹配.我不关心(还有!)关于数据库负载,我很高兴它能够在每次击键时触发查询并完全绕过缓存 – 我只是不想错过任何东西.
为此,我尝试设置cacheLength = 1,允许的最小值,但自动完成功能拒绝为每个键启动GET请求.
searchBox GET_request
'a' -> http://localhost/service_search_request?q=a
'ar' -> http://localhost/service_search_request?q=ar
'ars' -> http://localhost/service_search_request?q=ars
相反,它发送第一个和第三个并错过了第二个,给了我’ar’的错误结果: – /我已经清除了我的缓存和会话但看起来某种缓存仍在继续. AFAIK我没有任何代理,我每次都换班.看起来这种行为很可能来自jQuery.autocomplete本身.
所以我的问题是……
B)如果是这样,它周围有一个干净的方式?…
C)如果没有,你会使用什么自动完成?
当然D)不,你只是错误地使用它你冲洗!总是有可能,而且我确实喜欢花时间走这条路 – 假设它附带了我未能找到/读取的文档的链接!
干杯,
罗杰:)
解决方法:
我想知道为什么cacheLength不起作用,但也有自动完成的麻烦.恕我直言,它有错误.但是,在list of options中,有一个matchSubset可以设置为false.
编辑:
第335行附近的某个地方叫做“请求”.您可以向其添加一些调试消息,以查看会发生什么:(注意:您需要安装firebug或“控制台”将是未知的)
function request(term, success, failure) {
console.debug("ac request...");
if (!options.matchCase)
term = term.toLowerCase();
var data = cache.load(term);
console.debug("ac request 1, loaded data from cache: " + data + " term: " + term);
// recieve the cached data
if (data && data.length) {
success(term, data);
// if an AJAX url has been supplied, try loading the data Now
} else if( (typeof options.url == "string") && (options.url.length > 0) ){
console.debug("ac request 2, data is not in the cache, request it");
“flushCache”可以很容易地用在您可以附加/设置为选项的功能中.如果后端可能有更多数据,我用它来清除缓存:
formatItem: function (data,i,n,value){
if(i === (this.max -1)){
console.debug("flushCache");
jQuery(this).flushCache();
}
return data[1] + " (" + data[0] + ")";
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。