jquery laravel得到ajax解析响应

时间:2013-11-23 17:29:17

标签: jquery get laravel-4

我正在尝试解析从控制器操作返回的JSON响应。我的Javascript代码如下:

$('#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显示数据和包含单词“undefined”的li标签很多,如下所示

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

我无法理解为什么我得到上述结果?我只想从响应返回的数据实际上是前三行。我是JQUERY的新手。提前致谢

1 个答案:

答案 0 :(得分:1)

如果它是JSON,为什么要将它包装在jQuery中?

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

设置正确的dataType,它将通过jQuery

使用JSON.parse进行解析
$.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