【问题标题】:Ajax/jQuery Comment SystemAjax/jQuery 评论系统
【发布时间】:2011-02-26 21:46:43
【问题描述】:

使用 Ajax 和 JQuery 构建评论系统,我希望在添加评论后重新加载 cmets 所在的 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> 

【问题讨论】:

    标签: php jquery ajax


    【解决方案1】:

    由于您要重新生成整个 div,我将使用 replaceWith

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

    【讨论】:

      【解决方案2】:

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

      所以,比如:

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

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

      我将创建一个 JSON 对象,该对象具有 status 属性和 data 属性。当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);
         }
      }
      

      【讨论】:

      • @John:不客气。仅供参考,我没有测试代码,但它应该可以工作。如果您遇到困难,请发表评论,我会提供帮助。
      • +1 drackir,感谢您耐心地写这么多……所以网站非常适合有这么多善良和聪明的人……
      猜你喜欢
      • 1970-01-01
      • 2016-07-31
      • 1970-01-01
      • 1970-01-01
      • 2013-01-22
      • 2019-02-23
      • 2016-05-15
      • 2013-02-25
      • 2011-08-16
      相关资源
      最近更新 更多