Ajax / jQuery评论系统

时间:2011-02-26 21:46:44

标签: php jquery ajax

使用Ajax和JQuery构建注释系统,我希望在添加注释后重新加载注释的div。它发布得很好。这是我到目前为止所做的。

函数getComments查询数据库并生成html

$.ajax({
type: "POST",
url: "post_comment.php",
data: dataString,
cache: false,
success: function(html){

????????? What should go here... it is a div with id#commentBody

}

<div id="commentBody">
    <ul>
    <?php
        $q = "SELECT * FROM comment WHERE parent_id = 0 AND idpost = $postID";
        $r = mysql_query($q);
        while($row = mysql_fetch_assoc($r)):
            getComments($row,$postID,$custID);
        endwhile;
    ?>
    </ul>
</div> 

2 个答案:

答案 0 :(得分:2)

由于你正在重新生成整个div,我会使用replaceWith

$('#commentBody').replaceWith(html);

答案 1 :(得分:1)

发布时,您应该从服务器端脚本返回所需的数据。然后你可以使用.html() jQuery函数来更新你的div。

所以,像:

$('#commentBody').html(html);

您也可以只返回最新评论(可选择作为JSON对象),然后使用.append()方法将其添加到#commentBody。

我将创建一个具有status属性和data属性的JSON对象。当status为-1(或其他)时,添加注释时出错,您可以在data属性中添加消息。当status为0时,它已成功,并且data属性中提供了最新的评论信息。

示例

PHP

//Check postback variables, add comment and retrieve
//  comment information (such as ID) if necessary
if (postedsuccessfully) {
   $ary = array("status" => 0,
                "data" => array("id" => $commentidvar,
                                "user" => $commentuser,
                                "text" => $comment)
               );
   echo json_encode($ary);
} else {
   $ary = array("status" => -1,
                "data" => "There was a problem adding your comment.");
   echo json_encode($ary);
}

的JavaScript

success: function(json){
   if (json.status == 0) {
      $mydiv = $('<div>');//construct your comment div using json.data.id,
                          //json.data.user, and json.data.text
      $('#commentBody').append($mydiv);
   } else {
      alert(json.data);
   }
}