плагин jquery автозаполнение - не отображаются результаты - PullRequest
0 голосов
/ 29 ноября 2011

У меня проблема с плагином Auto complete.Вот мой код:

    var autocomplete = {
       cache: {},
       xhr: {}
    };

   $('#header .search input[type="text"]').autocomplete({
      minLength : 2,
      source: function (request,response) {
         var q = request.term;
         if( q in autocomplete.cache ) {
           response( autocomplete.cache[q] );
           return false;
         } else {
           autocomplete.hxr = $.getJSON("/search/autocomplete/nous?ajax=1&q="+q,function(data, status, xhr) {
           autocomplete.cache[q] = data;
           //if( autocomplete.xhr === xhr ) { 
                response(data);
           //}
        });
        return true;
        }
       }
    });

Когда я пишу что-то во входные данные (в данном случае «Hello»), я вижу в инструменте веб-разработчика, что он возвращает массив json.Итак, я получаю действительный ответ, когда запрос выполнен.

 0: "hello kitty"
 1: "hello dolly and frieda"
 2: "hello ass"
 3: "hello there"
 4: "hello do you make"

Он выполняет запросы ajax, но результаты не помещаются в раскрывающееся меню, оно пустое.Любая помощь приветствуется !!

Спасибо!

1 Ответ

1 голос
/ 30 ноября 2011

Этот ответ основан на комментариях:

Вот как вы можете достичь той же цели, используя отложенные объекты:

var autocomplete = {
    cache: {}
};

$('#header .search input[type="text"]').autocomplete({
    minLength: 2,
    source: function(request, response) {
        var q = request.term;
        if (!autocomplete.cache[q]) {
            autocomplete.cache[q] = $.getJSON("/search/autocomplete/nous?ajax=1&q=" + q);
        }
        autocomplete.cache[q].done(response).fail(function(x,y,z){
            alert(x.responseText + "\n-----\n" + y + "\n" + z);
        });       
    }
});

Редактировать: похоже, причина, по которой исходный код не работал, была из-за опечатки.

Edit2: добавлен обработчик ошибок

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...