javascript – 绕过jQuery.autocomplete上的所有缓存(1.02)

我在我的搜索框上使用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本身.

所以我的问题是……

A)这看起来有可能吗?即它是一个功能,还是一个错误

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] + ")";
}

相关文章

页面搜索关键词突出 // 页面搜索关键词突出 $(function () {...
jQuery实时显示日期、时间 html: <span id=&quot...
jQuery 添加水印 <script src="../../../.....
中文:Sys.WebForms.PageRequestManagerParserErrorExceptio...
1. 用Response.Write方法 代码如下: Response.Write(&q...
Jquery实现按钮点击遮罩加载,处理完后恢复 思路: 1.点击按...