2017-03-24 3 views
0

複雑な入れ子になったjsonをjqueryオートコンプリート形式にマップするにはどうすればよいですか?カスタムJsonを必要なjqueryオートコンプリートフォーマットのラベル、値にマップしようとしましたが、私のリストは「未定義」です。これは私の設定です:複雑な入れ子になったjsonをjqueryオートコンプリート形式にマップするにはどうすればいいですか?

JSON:

{"data":[{"DT_RowId":"row_A6J851","accounts":{"code":"A6J851","name":"Peter Jackson"}},{"DT_RowId":"row_1D01Q14","accounts":{"code":"1D01Q14","name":"Earl Bundy"}}]} 

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

答えて

1

それはあなたがネストされたアカウントの配列を反復されていないデータの例からのように見えるのではなく、データ配列。次のように試してみてください:

$('#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); 
    };   
}  
}); 
関連する問題