2017-03-24 5 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"}}]} 

자바 스크립트 :

$('#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); 
    };   
}  
});