【问题标题】:display multiple rows from foreach result using json_encode使用 json_encode 从 foreach 结果显示多行
【发布时间】:2012-08-02 07:18:13
【问题描述】:

我正在开发一个评论系统,我正在尝试构建一个函数,使用 ajax 从数据库中查询和显示 10 个最新的 cmets。

我遇到的问题是,我不知道如何使用 ajaxjson_encode 显示 multiple 行。

当我用php显示多行时,我使用.=,这很简单,但是用ajax和json_encode,我到目前为止只能显示一个结果。

下面是我的代码的纯PHP版本,用于显示多行

public function display_comment(){
    $query = "SELECT * FROM 'comment' WHERE 'user_id' = $user_id ORDER BY 'save_time' DESC LIMIT 10";
    $result = $database->query($query);

    foreach($result as $row){
        $user_id = $row['user_id'];
        $user_name = $row['user_name'];
        $comment = $row['comment'];

        $all_comments .= '<div id="' . $user_id . '"><span>' . $user_name . '</span><span>' . $comment . '</span></div>';
    }
}

使用 ajax 和 json_encode,这就是我返回单个结果的方式

public function display_comment(){
    $query = "SELECT * FROM 'comment' WHERE 'user_id' = $user_id ORDER BY 'save_time' DESC LIMIT 10";
    $result = $database->query($query);

    foreach($result as $row){
        $user_id = $row['user_id'];
        $user_name = $row['user_name'];
        $comment = $row['comment'];

        $json_array = array("user_id" => $user_id, "user_name" => $user_name, "comment" => $comment);
        header('Content-type:application/json');
        exit(json_encode($json_array)); // I am using exit instead of echo, because somehow if I use echo, it returns entire html page. 
    }
}

jQuery 部分

$(document).on("click","#view_comment",function(e){
    e.preventDefault();
    $("#view_comment").text("loading..");
    var view_comment = $(this).val(); // Don't worry about this

    $.ajax({
        type:"post",
        data:{"view_comment":view_comment},
        dataType:"json",
        success:function(data){
            $('#ajax_comment').html('<div id="' + data.user_id + '"><span>' + data.user_name + '</span><span>' + data.comment + '</span></div>');
        },
        error:function(data){
            // Error code
        }
    });
});

我应该如何更改我的代码以使用 json_encode 显示多行?

非常感谢您!

【问题讨论】:

    标签: php ajax json


    【解决方案1】:

    您只能查看单行的原因是因为您在 while() 循环的第一次迭代之后存在脚本:

    exit(json_encode($json_array));
    

    把php改成:

    public function display_comment(){
      $query = "SELECT * FROM 'comment' WHERE 'user_id' = $user_id ORDER BY 'save_time' DESC LIMIT 10";
      $result = $database->query($query);
      $results = array();
      foreach($result as $row){
        $user_id = $row['user_id'];
        $user_name = $row['user_name'];
        $comment = $row['comment'];
    
        $results[] = array("user_id" => $user_id, "user_name" => $user_name, "comment" => $comment);
    
      }
      header('Content-type:application/json');
      exit(json_encode($results)); 
    }
    

    Javascript

    $(document).on("click","#view_comment",function(e){
        e.preventDefault();
        $("#view_comment").text("loading..");
        var view_comment = $(this).val(); // Don't worry about this
    
        $.ajax({
            type:"post",
            data:{"view_comment":view_comment},
            dataType:"json",
            success:function(data){
                var html = '', comment;
                for(var i = 0; i < data.length; i++) {
                    comment = data[i];
                    html += '<div id="' + comment.user_id + '"><span>' + comment.user_name + '</span><span>' + comment.comment + '</span></div>'
                }
                $('#ajax_comment').html(html);
            },
            error:function(data){
                // Error code
            }
        });
    });
    

    【讨论】:

      猜你喜欢
      • 2022-06-19
      • 2017-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多