2012-08-02 6 views
0

저는 주석 시스템에서 작업 중이며 ajax를 사용하여 데이터베이스에서 10 개의 최신 코멘트를 쿼리하고 표시하는 함수를 작성하려고합니다.json_encode를 사용하여 foreach 결과에서 여러 행을 표시합니다.

오전 데 문제는, 난 그냥 아약스로 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>'; 
    } 
} 

아약스와로 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를 사용하여 여러 행을 표시하려면 코드를 어떻게 변경해야합니까?

미리 감사드립니다. 당신이 while() 루프의 첫 번째 반복 한 후 스크립트를 기존 있기 때문에

답변

4

단일 행을 볼 만 할 수있는 이유 그 이유는 다음과 같습니다

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)); 
} 

자바 스크립트

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

관련 문제