Javascript 未定义项的Jquery自动完成呈现
我一直在为我的网站使用JqueryUI autocomplete,当它突然停止工作时,一切都很好。 我正在使用ajax获取源数据(json输出)。到目前为止,一切都进展顺利。但当我渲染结果时,结果是“未定义” 这是我的密码: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
$("#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)修复问题!奇怪的是直到现在它还在工作。。谢谢!!