我在显示数据库中的消息时遇到问题。我的网站有一个简单的聊天室,在读取/写入文本文件时运行良好。我现在尝试将其链接到带有名为 messages
的表的数据库。当我向表中写入“OK”时,消息未显示在屏幕上。
通过使用 POSTMAN,我知道我已成功与后端通信,因为当我运行请求时 - {"state":1,"text":["欢迎所有用户!"]}
返回,这是我输入的最后一条消息,并且 json echo ($log)
正在工作。
除了 updateChat()
函数(下面发布)之外,我还有一个名为 getState()
的函数,它获取聊天的当前状态(行数,是否添加了新行)。
由于我的 SQL 查询似乎工作正常,我的 updateChat()
或 ()getState
函数是否存在问题?
诚然,我以前从未建立过聊天室,而且我有点不知道下一步该去哪里。
感谢您的帮助或建议!
****chat.js****
//Updates the chat
function updateChat() {
if (!instanse) {
instanse = true;
$.ajax({
type: "POST",
url: "process.php",
data: {
'function': 'update',
'state': state,
'file': file
},
dataType: "json",
success: function (data) {
if (data.text) {
for (var i = 0; i < data.text.length; i++) {
$('#chat-area').append($( data.text[i] + "</p>"));
}
}
document.getElementById('chat-area').scrollTop = document.getElementById('chat-area').scrollHeight;
instanse = false;
state = data.state;
}
});
} else {
setTimeout(updateChat, 1500);
}
}
process.php
case('getState'):
$lines = "SELECT messageBody, timeSent, nickname FROM message ORDER BY timeSent";
$log['state'] = count($lines);
break;
case('update'):
$state = $_POST['state'];
$lines = "SELECT messageBody, timeSent, nickname FROM message ORDER BY timeSent";
$result = mysqli_query($conn, $lines);
if (mysqli_num_rows($result) > 0) {
while ($row = mysqli_fetch_assoc($result)) {
$message = $row['messageBody'];
$time = $row['timeSent'];
$nickname = $row['nickname'];
}
}
$count = count($lines);
if ($state == $count) {
$log['state'] = $state;
$log['text'] = false;
} else {
$text = array();
$log['state'] = $state + count($lines) - $state;
$text[] = $message = str_replace("\n", "", $message);
}
$log['text'] = $message;
break;
最佳答案
尝试用ajax捕获错误,如果有,请告诉我们。
无论如何,
$('#chat-area').append($( data.text[i] + "</p>"));
这不会起作用。试试这个:
$('#chat-area').append("<p>" + data.text[i] + "</p>");
关于javascript - 如何使用 PHP 和 Javascript 更新聊天室,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55441351/