2013-05-03 48 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; 
       })); 
      } 
     ); 
    } 
});