【发布时间】:2015-10-07 20:10:18
【问题描述】:
我正在做一个真正的基本聊天,主要是 php 驱动的。我想使用 jQuery 检查新消息并每隔几秒更新一次#cbox div。到目前为止,我已经尝试使用下面的代码来实现这一点。作为参考,这是我第一次将 jQuery 包含到我的任何脚本中,所以问题可能是一个非常简单的错误,我在新手中忽略了它。
我遇到的问题是#cbox div 显示空白,它似乎根本没有调用chat_post.php。我也会发布该代码,以防问题出在那个而不是我的 jQuery 上。为了解决这个问题,我还尝试在chat_post.php 中包含<div id='cbox'>,但没有产生任何结果。在这一点上,我几乎抓住了稻草。
<div id='sb_content'>
<center><div id='chat'>
<div id='ribbon' style='position: relative; margin-top:-50px; margin-left:-32px;'><center><span class='ribbon'>chat box</span></center></div>
<div style='margin-top: -20px;'><center><span style='text-shadow: 0 0 0.2em #000;' class='admin'>admin</span> || <span style='text-shadow: 0 0 0.2em #000;' class='mod'>mod</span></center></div>
<div id="cbox">
<script>
$(document).ready(function() {
setInterval(function(){getUpdates()}, 2000);
});
function getUpdates() {
$("#cbox").load("chat_post.php");
}
</script>
</div>
<form name="message" method='post' action="chat_post.php" id="cbox_input">
<input name="usermsg"id='usermsg' type="text" size="63" maxlength="255" />
</form>
</div></center>
</div>
chat_post.php
<div id='cbox' align='left'>
<?php
$username = $_SESSION['login'];
$ug = $_SESSION['user_group'];
// Display messages
$sql = <<<SQL
SELECT *
FROM `chat_entries`
ORDER BY `ts` DESC
LIMIT 0,50
SQL;
$result = $db->query($sql);
$count = $result->num_rows;
if ($count != 0){
while ($row = mysqli_fetch_array($result)) {
$c_name = $row['author'];
$c_text = $row['text'];
$c_ts = $row['ts'];
$c_id = $row['id'];
$sqlm = <<<SQL
SELECT *
FROM `users`
WHERE username = '$c_name'
SQL;
$resultm = $db->query($sqlm);
$countm = $resultm->num_rows;
if ($count != 0){
while ($rowm = mysqli_fetch_array($resultm)) {
$c_level = $rowm['user_group'];
}
}
if ($c_level == 'mod') {
echo "
<a href='/user/" . $c_name . "' class='mod'>" . $c_name . "</a>
";
}
if ($c_level == 'admin') {
echo "
<a href='/user/" . $c_name . "' class='admin'>" . $c_name . "</a>
";
}
if ($c_level == 'member') {
echo "
<a href='/user/" . $c_name . "' class='member'>" . $c_name . "</a>
";
}
if ($c_level == 'guest') {
echo "
<i>" . $c_name . "</i>
";
}
echo "
: " . $c_text . "<div id='cbox_div'>";
echo "<span style='float:left;'><i>" . $c_ts . "</i></span>";
echo "<span style='float:right;'>";
if ($ug == 'mod' || $ug == 'admin'){
echo " <a href='#'>Delete</a> || <a href='#'>Block</a> ||";
}
if ($_SESSION['login']) {
echo "<a href=/report/?type=chat?id=" . $c_id . ">Report</a></span></div>
";
}
}
}
?>
【问题讨论】:
-
在您的
chat_post.php上,在session_start()之后尝试print_r($_SESSION);,看看它是否至少填充了它。 -
在浏览器控制台开发工具网络选项卡中检查实际请求的状态响应等
-
@Rasclatt 没有骰子,仍然是空白。当我手动进入该页面时,它会很好地显示聊天消息,只是无法正确填充到 div 中。
-
你的控制台有错误吗?
-
不能在页面中复制 ID,它们在定义上是唯一的...确保删除 chat.php 中的 ID