Javascript jquery自动完成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:

我对jQueryUIAutoComplete插件有问题。我不知道如何映射我从服务器返回的响应

以下是JSON结构:

{
    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');
        });
    });