2013-11-23 90 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