2011-08-18 75 views
2

JQuery发送请求,我看到没有错误的响应(通过Firebug)。但对于一个或两个字符,结果不会显示在下拉列表中。通常在第二个字符输入结果开始显示(我慢慢打字,每秒1个字符左右,只是为了测试它是否是某种速度问题)。JQuery UI Autosuggest不立即显示项目

这里是萤火虫的请求/ RESP的例子,在这一点上的项目不被显示在页面上:

{ 
    "responseHeader":{ 
    "status":0, 
    "QTime":1, 
    "params":{ 
     "fl":"title,count", 
     "sort":"count desc", 
     "indent":"on", 
     "start":"0", 
     "q":"\"b\" AND count:[3 TO *]", 
     "wt":"json", 
     "rows":"5", 
     "version":"2.2"}}, 
    "response":{"numFound":6536,"start":0,"docs":[ 
     { 
     "title":"blood", 
     "count":19890}, 
     { 
     "title":"biochemistry", 
     "count":14480}, 
     { 
     "title":"biochemical and biophysical research communications", 
     "count":6976}, 
     { 
     "title":"businessweek", 
     "count":6498}, 
     { 
     "title":"biochimica et biophysica acta", 
     "count":6226}] 
    }} 

同样,正如我所说,控制台显示页面上没有错误。

有关我该如何解决这个问题的想法?

的JavaScript代码是:

function autosuggest(term, wid) 
{ 
    var query = "q=" + escape(term); 
    var url = "/autosuggest.do?" + query; 

    $.getJSON(url, function(terms) 
    { 
     // iterate over terms 

     var list = new Array(); 

     if (terms.response != null && terms.response.docs != null) { 
      for(var i=0; i < terms.response.docs.length; i++) 
      { 
       var trm = terms.response.docs[i]; 
       list[i] = trm.title; 
      } 
      $('#' + wid).autocomplete({source: list, select: function(event, ui) { 
       doSuggestedSearch(ui.item.value); 
      }}); 
     } 
    }); 
} 

任何想法,将不胜感激。

+0

当您查看Firebug(或其他开发控制台)中的数据时,数据是否与您对每个请求所期望的一样? –

回答

1

自动提示有一个延迟选项,默认为300毫秒,它可以覆盖:

$(".selector").autocomplete({ delay: 0 });

+0

谢谢你的回应!是的,默认是300毫秒tho'...此外,minLength默认为1.我试图将它设置为0无济于事。我也尝试将延迟设置为0,但它也没有区别。这是奇怪的行为(对我来说)。我想也许这是一种滞后,但我可以看到服务器立即响应查询,因为我键入。 – Tuishimi

0

好吧,看来在这个例子中是工作的罚款:http://jsfiddle.net/william/Z7bcQ/

是否有任何的并发请求或重处理?我建议你以某种方式配置你的页面并找出瓶颈。 Firebug在控制台选项卡中有一个profiler。 Safari还在其Web Inspector中附带了一个漂亮的分析器。

+0

分析器...是的,这是一个好主意!我没有想到这一点。 – Tuishimi