2013-06-01 72 views
-1

我想創建一個簡單的評論欄,使用PHP,AJAX,MySQL和json編碼。評論條mysql php和ajax

我有兩個文件用PHP編寫的,第一個是控制器與下面的代碼:

<?php 
    require("../includes/config.php"); 
    if ($_SERVER["REQUEST_METHOD"] == "GET") { 

     $comments = query("SELECT comments.comment, comments.author, comments.time FROM comments WHERE workid = ?", $_GET["workid"]); 
     echo json_encode($comments); 

    } 
    else if ($_SERVER["REQUEST_METHOD"] == "POST") { 
     if (empty($_SESSION["userid"])) { 
      throw new Exception("Login"); 
     } 
     else { 

     $result = query("INSERT INTO comments (comment, author, time, workid) VALUES(?, ?, ?, ?)", $_POST["text"], $_SESSION["userid"], date("Y-m-d H-i-s"), $_POST["workid"]); 
     if ($result !== false) { 
      echo "success"; 
     } 
     } 


    } 

?> 

第二個被聲稱是從MySQL顯示記錄的基礎上,從數據控制器:

<script> 
//loads the comments 
$(document).ready(function(){ 
    var comment; 
    $.ajax({ 
     type: "GET", 
     url: "../html/comments.php", 
     data: { 
      workid: <?php echo $id;?> 
     }, 
     dataType: "json", 
     success: function(e) { 
      var lis = ""; 
      for (var i = 0; i < e.length; i++) { 
       comment = e[i]; 
       lis += 

       "<li class='comment'>" + 
       "<div class='well'>" + 
       "<p>" + 
       "<a class='username' href='#'>" + comments.author + ": " + "</a>" + 
       comments.comment + 


       "</p>" + 

       "<small class='pull-right'>" + comments.time + "</small>" + 

       "</div>" + 

       "</li>"; 



      } 
      $("#comments").html(lis); 

     }, 
     error: function(e) { 
      $("#comments").html(
       "<li class='comment'> Couldn't load comments </li>" 
       ); 
     } 

    }); 
}); 
</script> 

<script> 
$(document).ready(function(){ 
    $("#comment-button").click(function(){ 

     $.ajax({ 
      type: "POST", 
      url: "../html/comments.php", 
      data: { 
       workid: <?php echo $id;?>, 
       text: $("#comment-textarea").val() 
      }, 
      dataType: "text", 
      success: function(e) { 
       var comment; 
       $.ajax({ 
        type: "GET", 
        url: "../html/comments.php", 
        data: { 
         workid: <?php echo $id;?> 
        }, 
        dataType: "json", 
        success: function(e) { 
         var lis = ""; 
         for (var i = 0; i < e.length; i++) { 
          comment = e[i]; 

          lis += 

          "<li class='comment'>" + 
          "<div class='well'>" + 
          "<p>" + 
          "<a class='username' href='#'>" + comments.author + ": " + "</a>" + 
          comments.domment + 


          "</p>" + 

          "<small class='pull-right'>" + comments.time + "</small>" + 

          "</div>" + 

          "</li>"; 



         } 
         $("#comments").html(lis); 
         $("#comment-textarea").val(""); 

        }, 
        error: function(e) { 
         $("#comments").html(
          "<li class='comment'> Couldn't load comments </li>" 
          ); 
        } 

       }); 
      } 


     }); 


}); 
}); 
</script> 

一切工作都很好,除了最後一步;當顯示來自數據庫的數據時,唯一顯示的是「未定義」語句而不是corect數據。除此之外,正確顯示評論和表單的數量。我正在使用安裝了php的Apache服務器。

+0

代碼的意思是PDO? –

+0

是的。 PDO也啓用。 –

+0

我們能否請求方法/函數查詢的代碼() –

回答

1

在您的JavaScript代碼中,您需要用替換爲comment.<xxx>,因爲comments確實是JaveScript中未定義的對象。