2013-11-23 139 views
0

我想解析從控制器操作返回的JSON響應。我的JavaScript代碼如下:jquery laravel獲取ajax解析響應

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

我不能瞭解我爲什麼得到上述結果?我只想得到從響應返回的數據實際上是前三行。我是JQUERY的新手。在此先感謝

回答

1

如果它是JSON你爲什麼要包裝它在jQuery?

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

設置適當的數據類型,它會與JSON.parse的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 

以及適當的元素創建解析:

$.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