Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在ajax请求代码不允许我向上滚动后,滚动到div的底部_Javascript_Php_Jquery_Css_Ajax - Fatal编程技术网

Javascript 在ajax请求代码不允许我向上滚动后,滚动到div的底部

Javascript 在ajax请求代码不允许我向上滚动后,滚动到div的底部,javascript,php,jquery,css,ajax,Javascript,Php,Jquery,Css,Ajax,我正在尝试使用javascript代码在ajax请求$chatmessages后滚动到div的底部。scrollTop$chatmessages[0]。scrollHeight;但每当我有这个,它就不会让我向后滚动,因为我让javascript每秒检查一个php文件,以检查mysql数据库中是否有任何新记录。这是我的javascript var auto_refresh = setInterval(function (){$('#chatmessages').load('ajax.php').f

我正在尝试使用javascript代码在ajax请求$chatmessages后滚动到div的底部。scrollTop$chatmessages[0]。scrollHeight;但每当我有这个,它就不会让我向后滚动,因为我让javascript每秒检查一个php文件,以检查mysql数据库中是否有任何新记录。这是我的javascript

var auto_refresh = setInterval(function (){$('#chatmessages').load('ajax.php').fadeIn("slow"); } , 10);
还有我的php文件

<?php
$con = mysqli_connect('localhost','root','','chat');
$query = mysqli_query($con,"SELECT * FROM `messages`");
while ($row=mysqli_fetch_assoc($query)) {
        echo '<div class="chat-replies">
                                <div class="chat-reply-container">
                                        <div class="chat-reply-avatar">
                                                <img src="img/default_avatar.png">
                                        </div>
                                        <div class="chat-reply-chat">
                                                <span class="chat-reply-author">',$row['user'],'</span><br>
                                                <span class="chat-reply-content">',$row['message'],'</span>
                                        </div>
                        </div>
                                </div>';
}
?>

有人知道我如何在从数据库中找到新行后滚动到div的底部,然后仍然能够滚动到顶部吗?提前谢谢

有很多事情你不应该做:

首先,使用setInterval重新加载内容

如果服务器在10毫秒内没有响应,或者internet连接很慢,那么您将收到多个活动请求。这将导致一个未定义的行为,因为较新的响应可能会在较晚的时间到达,或者在处理后增长更快的队列中

另一件事是,你正在以600毫秒的速度链接聊天信息上的fadeIns,因此每10毫秒你就要排队600毫秒的动画

因此,首先,您应该只在前一个请求成功或失败时重新检查新消息,然后您还应该等待fadeIn动画完成,或者清除动画队列

您也不应加载所有消息,而应仅加载新消息。例如,发送上次显示的消息的ID,并且仅当有新消息时才发送这些消息并将其附加到chatmessages div

还有一点需要注意的是:在你的问题中,你写[…]我让javascript每秒检查一个php文件[…],但是你的代码使用10毫秒的设置间隔。因此,要么您没有显示实际代码,要么您为setInterval选择了错误的值