Javascript jquery自动完成JSON映射成功
我对jQueryUIAutoComplete插件有问题。我不知道如何映射我从服务器返回的响应 以下是JSON结构:Javascript jquery自动完成JSON映射成功,javascript,jquery,autocomplete,Javascript,Jquery,Autocomplete,我对jQueryUIAutoComplete插件有问题。我不知道如何映射我从服务器返回的响应 以下是JSON结构: { categories: [ { slug: "car-index", name: "Car", rank: "5" }, { slug: "anim-index", name: "Animals", rank:
{
categories: [
{
slug: "car-index",
name: "Car",
rank: "5"
},
{
slug: "anim-index",
name: "Animals",
rank: "29"
},
],
queries: [
"term1",
"term2"
]
}
我的自动完成代码:
$.ajax({
url: autocompleteUrl,
dataType: 'json',
data: {
q: request.term
},
success: function(data) {
response(
$j.map( data, function(item) {
return {
name: item.categories.name,
slug: item.categories.slug,
rank: item.categories.rank,
query: item.queries
}
})
);
此代码给出错误。如果我在data.categories上绘制地图,我可以让它工作,但我还需要“查询”中的信息。我不知道如何从这两个地方返回结果。需要获取所有信息(查询、名称、slug、排名),以便在我的渲染函数中显示文本
}).data('uiAutocomplete')._renderItem = function (ul, item) {
return $('<li></li>')
.append('<a><span>' + item.name + '</span> - <span>Rank: ' + item.rank + '</span></a>')
.data('ui-autocomplete-item', item)
.appendTo(ul);
};
.data('uiAutocomplete')。\u renderItem=函数(ul,项){
返回$(“”)
.append(''+item.name+'-Rank:''+item.Rank+'')
.data('ui-autocomplete-item',item)
.附录(ul);
};
我真的被困在那里了,有人能帮忙吗
谢谢可以使用
name.value
符号访问以JSON格式返回的数据中的对象。例如,要访问属性categories
,它将返回一个数组,我们只需调用data.categories
。要循环遍历返回的数组中的项,可以使用
另外,我建议您不要依赖jqXHR.success
,而应该链接一个延迟对象并在AJAX调用后使用:)
$.ajax({
url:autocompleteUrl,
数据类型:“json”,
数据:{
问:请求.期限
}
}).完成(功能(数据){
//成功函数
//遍历data.categories返回的数组中所有元素的示例
$.each(data.categories,function(){
$(“”)
.html(“类别和查询是否有一对一的关系?每个类别中的项目数总是不同的。每个示例可以有2个类别和15个查询。我非常确定我必须使用_renderItem函数才能修改自动完成插件下拉列表。这意味着我必须映射成功函数中需要的所有信息。
$.ajax({
url: autocompleteUrl,
dataType: 'json',
data: {
q: request.term
}
}).done(function(data) {
// Success function
// Example of iterating through all elements in the array returned by data.categories
$.each(data.categories, function() {
$('<li />')
.html('<a><span>' + this.name + '</span> - <span>Rank: ' + this.rank + '</span></a>')
.data('ui-autocomplete-item', item)
.appendTo('ul');
});
});