Javascript AJAX聊天、刷新和大量消息

Javascript AJAX聊天、刷新和大量消息,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,目前我正在自己编写一个ajax聊天程序。核心内容已经完成,但我有两个问题: 我每2秒钟检查一次新消息,如果有新消息,我会将它们添加到父聊天窗口中。但每次我添加元素时,聊天都会闪烁,这既不好看,也不是一个可以接受的问题。这就引出了我的第二个问题,重置元素的滚动 因为我希望聊天总是滚动到底,所以我使用.animate{scrollTop:$document.innerHeight},1;现在。但是,在一定数量的信息或子元素中,滚动条只会停留在低谷的一半 我查找了这两个问题,但还没有找到任何帮助。因为

目前我正在自己编写一个ajax聊天程序。核心内容已经完成,但我有两个问题:

我每2秒钟检查一次新消息,如果有新消息,我会将它们添加到父聊天窗口中。但每次我添加元素时,聊天都会闪烁,这既不好看,也不是一个可以接受的问题。这就引出了我的第二个问题,重置元素的滚动

因为我希望聊天总是滚动到底,所以我使用.animate{scrollTop:$document.innerHeight},1;现在。但是,在一定数量的信息或子元素中,滚动条只会停留在低谷的一半

我查找了这两个问题,但还没有找到任何帮助。因为我自己聊天,所以我在谷歌上搜索了很多

感谢您的建议或帮助,如何改进聊天!:

编辑:追加代码

        `// For loop for every chat window
        for(i = 0; i < chatListArray.length; i++)
        {
            (function(id) {
                // Ajax call to get the chat history
                $.ajax({
                    type: "POST",
                    url: 'code/submit/submitGetChat.php',
                    data: "id=" + id,
                    success: function(data){              
                        $('#chatItemContent_' + id).empty(); // Clear the window
                        $('#chatItemContent_' + id).append(data); // Append the new chat history
                        $('#chatItemContent_' + id).animate({ scrollTop: $(document).innerHeight() }, 1); // scroll down to bottom, to display the latest messages
                    }
                });
            })(chatListArray[i]); // callback
        }`

滚动时,您得到的是文档的高度,而不是要滚动的元素。你试过这个吗

$('#chatItemContent_' + id).animate({ scrollTop: $('#chatItemContent_' + id).innerHeight() }, 1);

它将根据当前聊天窗口高度而不是文档高度设置scrollTop。

请显示附加代码。可能您试图在一个包含许多append调用的循环中追加消息。在追加并显示它们之前,请尝试将它们连接起来:无样式或具有该样式的某个类,如.hidden,追加后将删除它。我编辑了问题。谢谢你的帮助!你为什么要清除元素?你会怎么做?只需向ajax调用发送新消息并附加它们?为什么每次附加之前都要清除?可能不应该这样做-SubmitGetcat应该只发送新消息。您可以发送最后一条消息的ID或时间戳,以便它知道应该发送回哪些消息。我将消息数量限制为20条,但即使只有几条消息,此错误仍然存在。。