Php 显示从数据库返回的阵列数据,而不刷新页面
我制作了一个Facebook风格的帖子和评论页面,用户可以在上面发表帖子和评论 我的第一个问题是,当我试图对帖子发表评论时,插入数据库的Php 显示从数据库返回的阵列数据,而不刷新页面,php,jquery,ajax,Php,Jquery,Ajax,我制作了一个Facebook风格的帖子和评论页面,用户可以在上面发表帖子和评论 我的第一个问题是,当我试图对帖子发表评论时,插入数据库的postID是最新的帖子,即使我对另一个postID发表评论 下一个问题是,我想实现的是,在评论一篇文章之后,即使我不刷新页面,评论也会在评论部分弹出。我已经试着寻找一个可能的解决方案,但没有一个适合我正在尝试的 以下是我的页面代码: post.php <?php foreach ($post_model->getcomment($postid)
postID
是最新的帖子,即使我对另一个postID
发表评论
下一个问题是,我想实现的是,在评论一篇文章之后,即使我不刷新页面,评论也会在评论部分弹出。我已经试着寻找一个可能的解决方案,但没有一个适合我正在尝试的
以下是我的页面代码:
post.php
<?php
foreach ($post_model->getcomment($postid) as $value) {
if($postid == $value['post_uid']){
?>
<div id="mycomments" class="col-lg-12" style="background:#eff9c7;">
<img src="./<?php echo $session_image?>" class="pull-left" style="border-radius:50%;margin-top:10px;" width="7%" height="7%" />
<p style="margin-top:18px;line-height:15px;"><strong class="font-1" style="margin-left:10px;"><?php echo $session_fname.' '.$session_lname?></strong> <?php echo $value['pc_comment']?><br>
<span class="" style="margin-left:10px;font-size:.9em;color:gray;"><abbr class="timeago" title="<?php echo $value['pc_datesend']?>"></abbr></span>
</p>
</div>
<?php
}
}
?>
<div class="col-lg-12" style="background:#eff9c7;">
<!-- <img src="../img/icons/no-icon-available.png" class="pull-left" style="border-radius:50%;margin-top:10px;" width="7%" height="7%" />-->
<input type="text" name="mycomment" id="mycomment" class="form-control pull-right" style="width:92%;margin-top:17px;" placeholder="Comments..." />
</div>
if(session_id() == '' || !isset($_SESSION))
session_start();
$session_id = $_SESSION['id'];
require_once('../model/dbconfig.php');
require_once('../model/post.php');
$database = new Database();
$conn = $database->getConnection();
$com = new post($conn);
$comments = ($_POST['comments']);
$uid = ($_POST['id']);
$pc_uimage = ($_SESSION['image']);
$pc_ufname = ($_SESSION['firstname']);
$pc_ulname = ($_SESSION['lastname']);
if(isset($_POST['id']) && isset($_POST['comments']))
{
$res = $com->comment($uid,$pc_uimage,$pc_ufname,$pc_ulname,$comments);
}
$res = $com->getcomment($uid);
echo json_encode($res);
controller.php
<?php
foreach ($post_model->getcomment($postid) as $value) {
if($postid == $value['post_uid']){
?>
<div id="mycomments" class="col-lg-12" style="background:#eff9c7;">
<img src="./<?php echo $session_image?>" class="pull-left" style="border-radius:50%;margin-top:10px;" width="7%" height="7%" />
<p style="margin-top:18px;line-height:15px;"><strong class="font-1" style="margin-left:10px;"><?php echo $session_fname.' '.$session_lname?></strong> <?php echo $value['pc_comment']?><br>
<span class="" style="margin-left:10px;font-size:.9em;color:gray;"><abbr class="timeago" title="<?php echo $value['pc_datesend']?>"></abbr></span>
</p>
</div>
<?php
}
}
?>
<div class="col-lg-12" style="background:#eff9c7;">
<!-- <img src="../img/icons/no-icon-available.png" class="pull-left" style="border-radius:50%;margin-top:10px;" width="7%" height="7%" />-->
<input type="text" name="mycomment" id="mycomment" class="form-control pull-right" style="width:92%;margin-top:17px;" placeholder="Comments..." />
</div>
if(session_id() == '' || !isset($_SESSION))
session_start();
$session_id = $_SESSION['id'];
require_once('../model/dbconfig.php');
require_once('../model/post.php');
$database = new Database();
$conn = $database->getConnection();
$com = new post($conn);
$comments = ($_POST['comments']);
$uid = ($_POST['id']);
$pc_uimage = ($_SESSION['image']);
$pc_ufname = ($_SESSION['firstname']);
$pc_ulname = ($_SESSION['lastname']);
if(isset($_POST['id']) && isset($_POST['comments']))
{
$res = $com->comment($uid,$pc_uimage,$pc_ufname,$pc_ulname,$comments);
}
$res = $com->getcomment($uid);
echo json_encode($res);
您所描述的声音可以通过使用不同的技术/方法来解决。例如,如果您正在向服务器发送AJAX请求以创建帖子,那么您可以返回创建的帖子并更新页面(使用jQuery、vanilla JavaScript或手头的任何框架)。您可能还需要某种服务器端推送(web套接字、长轮询等) 如果您对将实时通知集成到您的页面感兴趣,我将首先介绍一些服务,如或。这些服务允许您订阅从服务器触发的事件,这样您就可以“监听”您感兴趣的帖子中的更改。例如,您可以创建一个频道服务器端来广播对帖子的更改。然后,在客户端上,您可以订阅 当有更新需要显示时,可以很容易地获得通知。这可以在10行以内实现,因此非常值得
顺便说一下。这两项服务都提供了一个免费层,非常适合中小型项目。我自己在生产应用程序中使用过它们,多达10000个用户不用付一分钱,因此它们可能非常适合您的情况您请求的ajax结果是JSON。因此,您需要使用javascript数组结果重新创建注释的HTML。您可以使用jQuery创建HTML标记并附加到您的
#注释div只要在发布ajax成功后刷新div即可
jQuery("#your_div").load( refreshurl , function() {
// do. stuff
});