我在显示数据库中的消息时遇到问题。我的网站上有一个简单的聊天室,在读取/写入文本文件时可以很好地工作。我现在正尝试使用名为messages
的表将其链接到数据库。当我向OK表写入数据时,屏幕上未显示消息。
通过使用POSTMAN,我知道我已经成功地与后端通信了,因为当我运行一个请求时-返回了{"state":1,"text":["Welcome all users!"]}
,这是我输入的最后一条消息,并且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;
答案 0 :(得分:1)
尝试使用ajax捕获错误,如果有的话,向我们展示。
不管
$('#chat-area').append($( data.text[i] + "</p>"));
这将不起作用。试试这个:
$('#chat-area').append("<p>" + data.text[i] + "</p>");