2012-08-02 16 views
0

我正在評論系統上工作,我試圖構建一個函數,使用ajax從數據庫查詢並顯示10個最新評論。從使用json_encode的foreach結果顯示多行

我遇到的問題是,我無法弄清楚如何使用AJAX json_encode顯示行。

當我使用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顯示多行?

非常感謝你提前!

回答

4

你爲什麼只看見一個單行的原因是因爲你的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 
     } 
    }); 
}); 
+0

代碼精美的作品!非常感謝! – Peter 2012-08-02 07:39:59