好吧,经过几天的搜索和阅读后,我仍然无法让这个工作,所以这是我最后的机会。请记住,我是Ajax和JS的新手。
我有一个评论墙,您可以在页面上向其他人留下一个漂亮的小消息,它工作得很好但现在我想添加一些ajax,所以它每10秒自动刷新一次,并获得最新的评论。
问题是我将整个网站显示在div内,而不是评论。
我有一个带有以下代码的js文档
(function update() {
$.ajax({
type : 'GET',
url : 'index.php',
success : function(data){
$('#cmt_wall_container').html(data);
},
}).then(function() {
setTimeout(update, 10000);
});
})();
我的Index.php页面包含以下内容
<?php include_once 'connect.php'; ?>
<?php
$cmt_list = "";
$sql = mysqli_query($con, "SELECT * FROM cmt ORDER BY id DESC LIMIT 10");
$cmtCount = mysqli_num_rows($sql);
if($cmtCount > 0){
while($row = mysqli_fetch_array($sql)){
$id = $row["id"];
$comment = $row["comment"];
$cmt_list .="<div class='post-container'><p class='post-comment'>$comment</p></div>";
}
} else {
$cmt_list = "leave a comment";
}
?>
<head>stuff..</head>
<body>
<div id="cmt_wall_container">
<?php echo $cmt_list; ?>
</div>
</body>
我希望这很清楚! 非常感谢你提前,你真的是我最后的希望!!!!!
答案 0 :(得分:0)
在这些方面尝试更多内容......
THE JS SCRIPT:
function update() {
$.post( "index.php", { grab: "comments"}).done(function( data ) {
$('#cmt_wall_container').html(data);
setTimeout(update, 10000);
});
}
PHP SCRIPT:
<?php
include_once 'connect.php';
$cmt_list = "";
$sql = mysqli_query($con, "SELECT * FROM cmt ORDER BY id DESC LIMIT 10");
$cmtCount = mysqli_num_rows($sql);
if($cmtCount > 0){
while($row = mysqli_fetch_array($sql)){
$id = $row["id"];
$comment = $row["comment"];
$cmt_list .="<div class='post-container'><p class='post-comment'>$comment</p></div>";
}
} else {
$cmt_list = "leave a comment";
}
// Return Results To Ajax And Exit
if (isset($_POST['grab']) && $_POST['grab']==="comments") {
echo $cmt_list;
exit;
} // Else Load Page As Normal
?>
<head>stuff..</head>
<body>
<div id="cmt_wall_container">
<?php echo $cmt_list; ?>
</div>
</body>
通过使用isset,您可以检测您是否从ajax请求并仅返回注释,否则您正常加载页面的重置..它的一种方法/方法。
注意这仍然适用于$ _GET ..如果需要,只需将$ _POST更改为$ _GET,但是使用退出选项..你不需要将整个网站包装在else语句中..它更干净
因此,将您的ajax网址更改为index.php?grab = comments并将其添加到您的PHP代码下方。
if (isset($_GET['grab']) && $_GET['grab']==="comments") {
echo $cmt_list;
exit;
}
通过使用此方法,您还可以使用grab = admin_comments或您希望的方式来控制您的评论。
答案 1 :(得分:0)
它应该像8BitProgrammer建议的那样工作
(function update() {
$.ajax({
type : 'GET',
url : 'index.php?comments=true',
success : function(data){
$('#cmt_wall_container').html(data);
},
}).then(function() {
setTimeout(update, 10000);
});
})();
PHP:
<?php include_once 'connect.php'; ?>
<?php
$cmt_list = "";
$sql = mysqli_query($con, "SELECT * FROM cmt ORDER BY id DESC LIMIT 10");
$cmtCount = mysqli_num_rows($sql);
if($cmtCount > 0){
while($row = mysqli_fetch_array($sql)){
$id = $row["id"];
$comment = $row["comment"];
$cmt_list .="<div class='post-container'><p class='post- comment'>$comment</p></div>";
}
} else {
$cmt_list = "leave a comment";
}
if ($_GET["comments"]):
?>
<?php echo $cmt_list; ?>
<?php
else :
?>
<head>stuff..</head>
<body>
<div id="cmt_wall_container">
<?php echo $cmt_list; ?>
</div>
</body>
<?php
endif;
?>