2013-05-03 2 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

Я смог определить, что было не так в моей функции возврата: я не правильно зацикливался на результатах. Лучший способ - использовать функцию карты для ее итерации через них.

$("#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; 
       })); 
      } 
     ); 
    } 
}); 
Смежные вопросы