Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将复杂的嵌套json映射为jquery自动完成格式?_Javascript_Json_Jquery Ui Autocomplete - Fatal编程技术网

Javascript 如何将复杂的嵌套json映射为jquery自动完成格式?

Javascript 如何将复杂的嵌套json映射为jquery自动完成格式?,javascript,json,jquery-ui-autocomplete,Javascript,Json,Jquery Ui Autocomplete,如何将复杂的嵌套json映射为jquery自动完成格式?我试图将我的自定义json映射到所需的jquery自动完成格式标签、值。。。但是我的列表是“未定义的”。这是我的设置: JSON: Javascript: $('#input-search').autocomplete({ source: function ( request, response ) { $.ajax({ type: 'GET', url: '/source.php', dataType: "j

如何将复杂的嵌套json映射为jquery自动完成格式?我试图将我的自定义json映射到所需的jquery自动完成格式标签、值。。。但是我的列表是“未定义的”。这是我的设置:

JSON:

Javascript:

$('#input-search').autocomplete({
source: function ( request, response ) {
  $.ajax({
    type: 'GET',
    url: '/source.php', 
    dataType: "json",
    success: function( data ) {
        response( $.map( data.data.accounts, function( value, key ) {
            return {
              label: value.name,
              value: value.name,
              id: value.code
            }
        }));
      }
    });
},  
create: function() {            
    $(this).data('ui-autocomplete')._renderItem  = function (ul, item) {
        return $( "<li></li>" )
            .append( "<a>" + item.label + "</a>" )
            .appendTo( ul );
    };         
}       
});
$(“#输入搜索”)。自动完成({
来源:功能(请求、响应){
$.ajax({
键入:“GET”,
url:“/source.php”,
数据类型:“json”,
成功:功能(数据){
响应($.map(data.data.accounts),函数(value,key){
返回{
标签:value.name,
value:value.name,
id:value.code
}
}));
}
});
},  
创建:函数(){
$(此).data('ui-autocomplete')。\u renderItem=函数(ul,项){
返回$(“
  • ”) .append(“+item.label+”) .附录(ul); }; } });
    从您的数据示例来看,您不是在嵌套的accounts数组上迭代,而是在数据数组上迭代。试着这样做:

    $('#input-search').autocomplete({
      source: function ( request, response ) {
        $.ajax({
          type: 'GET',
          url: '/source.php', 
         dataType: "json",
         success: function( data ) {
           var results = [];
           $.each(data.data, function(d){
             var mapped = $.map(d.accounts, function( value, key ) {
              return {
                label: value.name,
                value: value.name,
                id: value.code
               };
              })
             results = results.concat(mapped);       
             });
             response(results);
            }
          });
     },  
     create: function() {            
        $(this).data('ui-autocomplete')._renderItem  = function (ul, item)     {
             return $( "<li>" )
                .append( "<span>" + item.label + "</span>" )
                .appendTo( ul );
      };         
     }       
    });
    
    $(“#输入搜索”)。自动完成({
    来源:功能(请求、响应){
    $.ajax({
    键入:“GET”,
    url:“/source.php”,
    数据类型:“json”,
    成功:功能(数据){
    var结果=[];
    $.each(数据、数据、函数(d){
    var-mapped=$.map(d.accounts,function(value,key){
    返回{
    标签:value.name,
    value:value.name,
    id:value.code
    };
    })
    结果=结果。concat(映射);
    });
    答复(结果);
    }
    });
    },  
    创建:函数(){
    $(此).data('ui-autocomplete')。\u renderItem=函数(ul,项){
    返回$(“
  • ”) .append(“+item.label+”) .附录(ul); }; } });
  • 从您的数据示例来看,您不是在嵌套的accounts数组上迭代,而是在数据数组上迭代。试着这样做:

    $('#input-search').autocomplete({
      source: function ( request, response ) {
        $.ajax({
          type: 'GET',
          url: '/source.php', 
         dataType: "json",
         success: function( data ) {
           var results = [];
           $.each(data.data, function(d){
             var mapped = $.map(d.accounts, function( value, key ) {
              return {
                label: value.name,
                value: value.name,
                id: value.code
               };
              })
             results = results.concat(mapped);       
             });
             response(results);
            }
          });
     },  
     create: function() {            
        $(this).data('ui-autocomplete')._renderItem  = function (ul, item)     {
             return $( "<li>" )
                .append( "<span>" + item.label + "</span>" )
                .appendTo( ul );
      };         
     }       
    });
    
    $(“#输入搜索”)。自动完成({
    来源:功能(请求、响应){
    $.ajax({
    键入:“GET”,
    url:“/source.php”,
    数据类型:“json”,
    成功:功能(数据){
    var结果=[];
    $.each(数据、数据、函数(d){
    var-mapped=$.map(d.accounts,function(value,key){
    返回{
    标签:value.name,
    value:value.name,
    id:value.code
    };
    })
    结果=结果。concat(映射);
    });
    答复(结果);
    }
    });
    },  
    创建:函数(){
    $(此).data('ui-autocomplete')。\u renderItem=函数(ul,项){
    返回$(“
  • ”) .append(“+item.label+”) .附录(ul); }; } });