使用AJAX更新动态网页

时间:2017-04-03 03:09:05

标签: javascript php jquery mysql ajax

我创建了一个由项目组成的网页,其中每个项目都包含一个文件列表。所有这些信息都是从MySQL数据库中获取的。我实现了一项功能,允许用户对每个文件发表评论并回复彼此的评论。我有一个名为“place comments”的php函数,它递归地为下面显示的每个文件放置注释。

对每个文件都执行此操作,并且使用while循环和一些回显html代码的语句,类似地替换每个文件。

但是,我遇到的问题是使用AJAX发布评论而不刷新页面。由于每个文件ID都不同,我必须使用特定的文件ID更新每个选择器,并为每个文件再次运行placeComments。

但是我不知道如何做到这一点。每次提交评论时,我都可以通过AJAX更新我的数据库。

我知道您可以执行以下操作,它会更新ID为“id”的任何选择器:

          $(document).ready(function() {  
             $.get('comments.php', function (data) {
                 $('#id').html(data);
             });
          });

但我不确定如何为每个文件ID迭代地执行此操作,其中每个文件ID是一个php变量? 有没有办法可以通过PHP与JS通信,以便更新注释 对于所有文件ID?如果是这样,怎么样?

我意识到这是一个糟糕的设计,但我想在不从头开始我的项目的情况下这样做。

放置评论功能:

     function placeComments($mysqli, $parentId, $fileId) {
            $sql = "SELECT * FROM Comments WHERE parent = $parentId AND file = $fileId ORDER BY UNIX_TIMESTAMP(date) ASC";

            $comments = $mysqli->query($sql);
            while($comment = $comments->fetch_assoc())
            {
                echo '
                <ul class="comments">
                    <li class="clearfix">
                        <div class="post-comments">
                            <p class="meta"> '. $comment['date'] .' <a href="#">'. $comment['username'] .'</a> says : <i class="pull-right">
                            <p>'
                            .
                            $comment['content']
                            .

                            '</i></p><br><br>';

                echo '<div class = "col-sm-12 reply panel-group">';
                echo '<div class="panel panel-default">';
                echo '<p><a data-toggle="collapse" href="#'. $comment[
                    'file'] . '-' . $comment['id'] . '"> Reply </a></p>';
                echo '<div id="'. $comment['file'] . '-' . $comment['id'] .'" class="panel-collapse collapse">';
                echo '<div class="panel-body">';


                if(isset($_POST['submitComment-' . $comment['file'] . '-' . $comment['id']]))
                {
                    $user = $_POST['username'];
                    $content = $_POST['content'];
                    $fileId = $_POST['id'];
                    $parent = $_POST['parent'];
                    $date = date('Y-m-d H:i:s', time());

                    filterComment($mysqli, $fileId, $user, $parent, $content, $date);
                }   

                echo '<form method="post" class="form-horizontal" id="commentForm" role="form"> 
                    <div class="form-group">
                        <div class="col-sm-10 form">
                        <h5><b> Name: <b></h5>
                        </div>
                        <div class="col-sm-10 form">
                          <textarea class="form-control" name="username" id="username" rows="1"></textarea>
                        </div>
                        <div class="col-sm-10 form">
                        <h5><b> Reply: <b></h5>
                        </div>
                        <div class="col-sm-10 form">
                          <textarea class="form-control" name="content" id="content" rows="3"></textarea>
                        </div>
                        <div>
                            <input class = "form-control" type = "hidden" value = '. $comment['file'] . ' name = "id" id = "id" />
                        </div>
                        <div>
                            <input class = "form-control" type = "hidden" value = '. $comment['id'] . ' name = "parent" id = "parent" />
                        </div>
                    </div>
                    <div class="form-group">
                        <div class="col-sm-offset-2 col-sm-10 form">                    
                            <button class="btn btn-success btn-circle text-uppercase" type="submit" id="submitComment" name = "submitComment-'. $comment['file'] .'-' . $comment['id'] . '"><span class="glyphicon glyphicon-send"></span> Reply </button>
                        </div>
                    </div>            
                </form>';

                echo '</div>';
                echo '</div>';
                echo '</div>';
                echo '</div><br><br>';
                placeComments($mysqli, $comment['id'], $comment['file']);
                echo '</div>';
                echo '</li>';



                echo '</ul>';
            }

            $comments->free();


        }

0 个答案:

没有答案