**编辑:这更像是一个HTML问题,因为我已经掌握了所有内容,但如何更改HTML以实现我的目标:
我制作了一个聊天系统,显示顶部任何聊天的最后消息(很像WhatsApp)。问题是,如果有新消息,它不会自动更新,但只有在刷新页面时才会更新。
主要的3个文件是:chat_box.php
,chat_handler.php
和view_chats.php
chat_box.php
- 是包含聊天框的文件,用户在其中输入消息并使用以下方式提交:
$.post('chat_handler.php?action=sendMessage&message=' + message, function(response){
});
然后chat_handler.php
依次获取消息并进行简单的SQL查询以将消息输入数据库。
第三个文件view_chats.php
是显示每个聊天记录的列表,其中包含最后一条消息,如下所示:
//SQL query here to fetch last message from each chat (Ordered by the last message)
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) { //echo chats and last messages
echo "<p><strong>$row['name']</strong></p><br/>"
."<p>$row['message']</p>"
."<hr/>"
}
现在view_chats.php
会正确显示列表,但如果有新消息则不会实时更新。需要页面刷新才能查看新消息。
收到新邮件后,我该怎么做才能更新?
显然,我需要在chat_handler.php
的AJAX请求中添加一些内容,以告知消息何时成功输入数据库,但实时更新它们的方法是什么?我的意思是始终将最新消息放在顶部,将前一条消息放在它下面
答案 0 :(得分:0)
AJAX的主要思想是,它是异步的。这意味着不依赖于刷新数据库的当前状态。
这意味着您要添加到数据库的任何信息,您还需要“手动”添加到聊天窗口。为此,请创建一个JavaScript文件,只要进行此AJAX调用,就会调用该文件。
然后,这个JavaScript文件应该将新消息的内容添加到聊天窗口中,同时您仍然保留旧的php文件,该文件写入数据库。即你应该通过JS为你的新消息创建HTML代码。
PHP文件更改数据库,而JS文件更改客户端视图。客户端和服务器端变为异步。一般来说,我建议你多读一些关于AJAX的内容。