Javascript 未定义项的Jquery自动完成呈现

Javascript 未定义项的Jquery自动完成呈现,javascript,jquery,ajax,jquery-ui,autocomplete,Javascript,Jquery,Ajax,Jquery Ui,Autocomplete,我一直在为我的网站使用JqueryUI autocomplete,当它突然停止工作时,一切都很好。 我正在使用ajax获取源数据(json输出)。到目前为止,一切都进展顺利。但当我渲染结果时,结果是“未定义” 这是我的密码: $("#autocomplete_user_field").autocomplete({ source: function (request, response) { $.a

我一直在为我的网站使用JqueryUI autocomplete,当它突然停止工作时,一切都很好。 我正在使用ajax获取源数据(json输出)。到目前为止,一切都进展顺利。但当我渲染结果时,结果是“未定义”

这是我的密码:

$("#autocomplete_user_field").autocomplete({
            source: function (request, response) {                      
                $.ajax({
                     type: "post",      
                    url: "/user/autocomplete_search_user",
                    data: {
                        user_input: request.term                            
                    },                                              
                    success: function(data) {   
                        if (data.length == 0) {                                                
                            $('.search-query').popover('show');
                        }
                        //alert(JSON.stringify(data));
                    response(data);                       
                    }                        
                });
            },
            minLength: 2,
            appendTo: "#menu",
            autoFocus: true
       }).data("ui-autocomplete")._renderItem = function( ul, item ) {         
        return $( "<li>" )
            .data( "ui-autocomplete-item", item )
            .append( "<a href='/users/" + item.slug + "'>" + "<img src='" + item.imgsrc + "' style='width: 35px; height: 35px; margin-right: 5px; float:left;'/>"  + item.label + "<br><span>" + item.mutualfriends + " <%= t 'friends.mutual_friends' %></span>" +  "</a>" )
            .appendTo(ul);
        }; 
$(“#自动完成用户字段”).autocomplete({
来源:功能(请求、响应){
$.ajax({
类型:“post”,
url:“/user/autocomplete\u search\u user”,
数据:{
用户输入:request.term
},                                              
成功:函数(数据){
如果(data.length==0){
$('.search query').popover('show');
}
//警报(JSON.stringify(数据));
答复(数据);
}                        
});
},
最小长度:2,
附件:“#菜单”,
自动对焦:正确
}).data(“ui自动完成”)。\u renderItem=函数(ul,项){
返回$(“
  • ”) .data(“ui自动完成项”,项) .附加(“”) .附录(ul); };
  • 在_renderItem函数下,如果我发出警报(“item.slug”);输出是“未定义的”,即使我从ajax帖子中检索的数据已正确加载(当我发出警报(JSON.stringify(data));)

    有人有主意吗?
    我已经下载了最新的jquery ui for autocomplete,但它仍然不起作用。

    您返回的数据与autocomplete不兼容。您应该返回具有label属性的对象数组,而不是按原样返回整个响应:

    $("#autocomplete_user_field").autocomplete({
      source: function(request, response) {
        $.ajax({
          type: "post",
          url: "/user/autocomplete_search_user",
          data: {
            user_input: request.term
          },
          success: function(data) {
            if (data.length == 0) {
              $('.search-query').popover('show');
            }
            response(data.users); // return the array
          }
        });
      },
      minLength: 2,
      appendTo: "#menu",
      autoFocus: true
    });
    
    您似乎还缺少
    数据类型:'json'
    。如果省略该选项,则响应将是一个
    字符串
    ,您需要手动解析该字符串。现在看起来您正在检查响应字符串的长度

    除此之外,这个反应似乎有一些奇怪的特征:


    因此,当您尝试访问“slug”时,响应中没有这样的内容…

    数据的结构是什么…?它是JSON。示例输出:{“users”:[{“id”:9,“label”:“Hermano”,“name”:“Hermano”,“imgsrc”:“/system/users/avatars/000/000/009/thumb/931408\u 10102296671738246\u 117979234_n.jpg?1410157274”,“slug”:“Hermano”,“mutualfriends”:5}]}不要在注释中转储代码块作为澄清的响应。。。回答问题并更新信息,使其完整…回答(data.users)修复问题!奇怪的是直到现在它还在工作。。谢谢!!