Система комментариев Ajax / jQuery - PullRequest
1 голос
/ 27 февраля 2011

Построение системы комментариев с 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 ]

2 голосов
/ 27 февраля 2011

Поскольку вы восстанавливаете весь div, я бы использовал replaceWith .

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

1 голос
/ 27 февраля 2011

Когда вы публикуете его, вы должны вернуть нужные данные из сценария на стороне сервера. Затем вы можете использовать функцию .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);
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...