2013-11-23 6 views
0

컨트롤러 작업에서 반환 된 JSON 응답을 구문 분석하려고합니다. 내가 성공적으로 데이터를 분석 할 수 있어요jquery laravel get ajax parse respone

$('#searchform').submit(function(e){ 
    var keyword = $("#q").val(); 
    $.get('search',$(this).serialize(),function(data){ 
     var data_obj = $(data); 

      var output="<ul>"; 
      for (var i in data_obj) 
      { 
       output+="<li>" + data_obj[i].name + ", " + data_obj[i].id + "</li>"; 
      } 
      output+="</ul>"; 

      $('#content').html(output); 

}); 
    e.preventDefault(); 
}); 

하지만, 같이 "정의되지 않은"단어를 포함하는 리튬 태그의 HTML 데이터를 표시하고 많은

john, 11 
doe, 14 
robert, 15 
undefined, undefined 
undefined, undefined 
, undefined 
undefined, undefined 
, undefined 
, undefined 
, undefined 

아래 내가 드릴 수 없습니다 : 내 자바 스크립트 코드는 다음과 같습니다 왜 내가 위의 결과를 얻고 있는지 이해하고 있습니까? 나는 실제로 상위 3 행인 응답에서 반환 된 데이터 만 가져오고 싶습니다. 나는 JQUERY를 처음 사용합니다. 미리 감사드립니다.

답변

1

JSON이라면 왜 jQuery로 래핑 하시겠습니까?

$.get('search',$(this).serialize(),function(data){ 
    var data_obj = $(data); // won't work ? 
    ...... 

적절한 데이터 유형을 설정하고, 그것은 jQuery를

$.get('search',$(this).serialize(),function(data){ 
    var output="<ul>"; 
    for (var i in data) { 
     output+="<li>" + data[i].name + ", " + data[i].id + "</li>"; 
    } 
    output+="</ul>"; 

    $('#content').html(output); 
}, 'json'); // dataType 

의해 적절한 소자 창조 JSON.parse으로 분석 될 것이다

$.get('search',$(this).serialize(),function(data){ 
    var ul = $('<ul />'); 

    $.each(data, function(i, value) { 
     ul.append($('<li />', {text : value.name + ', ' + value.id})); 
    }); 

    $('#content').html(ul); 

}, 'json'); // dataType