2013-05-03 87 views
0

我正在使用jQuery-ui和Solr創建一個整齊的搜索框,並使用自動完成功能。該查詢似乎工作正常,但結果並未實際顯示在我的搜索框中。這裏是我使用的代碼:使用Solr緩存自動完成

var cache = {}; 
$("#Keyword").autocomplete({ 
    minLength: 3, 
    source: function(request, response) { 
     var term = request.term; 
     if(term in cache) { 
      response(cache[term]); 
      return; 
     } 
     $.getJSON("http://127.0.0.1:8080/solr/terms/?terms=true&terms.fl=ctnt_val&wt=json&indent=on&terms.prefix=" + $("#Keyword").val(), 
       request, 
       function(data, status, xhr) { 
        cache[term] = data; 
        response(data); 
     }); 
    } 
}); 

所以我最好的猜測是我沒有正確處理返回值。我怎麼能讓他們正確地出現在我的搜索框下面?

回答

0

我能夠確定我的返回函數中出了什麼問題:我沒有正確循環結果。最好的方法是使用map函數遍歷它們。

$("#Keyword").autocomplete({ 
    minLength: 3, 
    source: function(request, response) { 
     $query = "http://127.0.0.1:8080/solr/terms/?jsoncallback=?&terms=true&terms.prefix=" + $("#Keyword").val(); 
     $.getJSON($query, 
      request, 
      function(data) { 
       response($.map(data.terms.ctnt_val, function(item) { 
        return item; 
       })); 
      } 
     ); 
    } 
});