jquery插件自动完成 - 不显示结果

时间:2011-11-29 19:50:18

标签: jquery jquery-plugins autocomplete

我遇到了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”),我可以在Web开发人员工具中看到它返回一个json数组。所以,我在请求完成后得到了有效的回复。

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

它正在执行ajax请求,但结果没有被推入下拉菜单,它是空的。任何帮助表示赞赏!!

谢谢!

1 个答案:

答案 0 :(得分:1)

此答案基于评论:

这是使用延迟对象实现相同目标的方法:

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:添加了失败处理程序