2011-08-18 48 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