Javascript 使用AJAX更新动态网页
我制作了一个包含项目的网页,每个项目都包含一个文件列表。所有这些信息都是从MySQL数据库获取的。我已经实现了一个功能,允许用户对每个文件发表评论,并回复彼此的评论。我有一个名为“PlaceComments”的php函数,它递归地为下面显示的每个文件放置注释 这将对每个文件执行,并使用while循环和一些回显html代码的语句以类似方式替换每个文件 然而,我遇到的问题是使用AJAX在不刷新页面的情况下发布评论。由于每个文件id不同,我必须用特定的文件id更新每个选择器,并为每个文件再次运行placeComments 然而,我不知道如何做到这一点。每次我提交评论时,我都可以通过AJAX更新我的数据库 我知道您可以执行以下操作,它将使用id“id”更新任何选择器: 但我不确定如何对每个文件id迭代执行此操作,其中每个文件id都是一个php变量? 是否有一种方法可以通过PHP与JS通信,以便它更新注释 对于所有文件ID?如果是,怎么做 我意识到这是一个糟糕的设计,但我想这样做,而不是从头开始我的项目 放置注释功能:Javascript 使用AJAX更新动态网页,javascript,php,jquery,mysql,ajax,Javascript,Php,Jquery,Mysql,Ajax,我制作了一个包含项目的网页,每个项目都包含一个文件列表。所有这些信息都是从MySQL数据库获取的。我已经实现了一个功能,允许用户对每个文件发表评论,并回复彼此的评论。我有一个名为“PlaceComments”的php函数,它递归地为下面显示的每个文件放置注释 这将对每个文件执行,并使用while循环和一些回显html代码的语句以类似方式替换每个文件 然而,我遇到的问题是使用AJAX在不刷新页面的情况下发布评论。由于每个文件id不同,我必须用特定的文件id更新每个选择器,并为每个文件再次运行pla
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();
}
函数placeComments($mysqli、$parentId、$fileId){
$sql=“从注释中选择*,其中parent=$parentId和file=$fileId ORDER BY UNIX_TIMESTAMP(date)ASC”;
$comments=$mysqli->query($sql);
而($comment=$comments->fetch_assoc())
{
回声'
-
”;
回声';
回声';
回声“”;
回声';
回声';
如果(isset($_POST['submitComment-'.$comment['file'..-'.$comment['id']]))
{
$user=$_POST['username'];
$content=$_POST['content'];
$fileId=$\u POST['id'];
$parent=$_POST['parent'];
$date=date('Y-m-dh:i:s',time());
filterComment($mysqli、$fileId、$user、$parent、$content、$date);
}
回声'
姓名:
答复:
回复
';
回声';
回声';
回声';
回音“
”;
placeComments($mysqli,$comment['id',$comment['file']);
回声';
回音“ ”;
回声“
”;
}
$comments->free();
}
我会对你说实话。我不明白你想要完成什么。根据我的理解,无论你想在哪里显示评论,都可以称之为ajax功能。因此,将ajax功能放在一个函数中,&在每个要显示注释的文件中调用此函数。@reeleedr,假设我有一个php文件,通过回显html代码在网页上动态创建文件列表。我希望用户能够对每个文件进行注释,使用AJAX异步更新注释。但是,如果我可能有数千个具有不同html ID的文件,我不知道如何做到这一点。@DipanwitaKundu,可能有数千个以上的文件。在不反复编写ajax代码的情况下,我如何完成类似的任务?问题是:我的每个文件都有不同的id,但我不确定如何让AJAX知道要更新哪个文件id。我基本上想从PHP向AJAX“发送”一些关于文件的信息。但我不确定我怎么能做到
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();
}