仅当收到 Ajax 请求的字符串消息时,才滚动到底部
Only scroll to bottom when a message a string is received for an Ajax request
>上下文
我正在尝试制作我的聊天应用程序,以便它仅在收到新消息时滚动到底部,我已经尝试使用此问题中提到的解决方案(JQuery 聊天应用程序仅在新消息上滚动到div 底部?),但它不起作用。 我还看到了另外两个问题,但是代码比我认为需要的要复杂得多。
我的代码
var scroll = function() {
function getMessages(letter) {
var div = $("#chat");
div.scrollTop(div.prop('scrollHeight'));
}
$(function() {
getMessages();
});
}
var newmessages = function() {
setTimeout(newmessages, 5000);
var request = $.ajax({
url: "ajaxtesting.php",
type: "GET",
dataType: "html"
});
request.done(function(msg) {
$("#chat").html(msg);
scroll();
});
request.fail(function(jqXHR, textStatus) {
alert("Request failed: " + textStatus);
});
}
newmessages();
如您所见,每次 Ajax 成功时都会调用滚动函数,但是,它只是每 5 秒滚动到底部。我尝试使用字符串长度没有取得多大成功,因为我得到了奇怪的字符串长度,即使没有发送消息,也会不断变化。
服务器端代码
require_once('mysqli_connect.php');
//$id = $_SESSION["user_id"];
//$cid = $_SESSION["cid"];
$id = $_SESSION['user_id'];
$cid = $_SESSION['cid'];
$query = "SELECT text, sentuser, recieveuser, icebreaker
FROM convoreply WHERE cid = $cid ORDER BY senttime ASC";
$response = @mysqli_query($dbc, $query);
if($response){
while($row = mysqli_fetch_array($response)){
$sentuser = $row['sentuser'];
$text = $row['text'];
$recieveuser = $row['recieveuser'];
$icebreaker = $row['icebreaker'];
if ($sentuser == $id){
echo '<div class="bubble">',"<p>", $text,"<br/>'n","</p>",'</div>';
}
if ($recieveuser == $id) {
echo '<div class="bubble2">',"<p>", $text,"<br/>'n","</p>",'</div>';
}
if ($icebreaker == 1) {
echo '<div class="bubble3">',"<p>", $text,"<br/>'n","</p>",'</div>';
}
if ($sentuser == 10000){
echo '<div class="bubble3">',"<p>", $text,"<br/>'n","</p>",'</div>';
}
}}
if ($cid == 0){
echo '<p>Please click on a user on the left hand
side to view the conversation.</p>';
}
mysqli_close($dbc);
因为您绑定了ajax.done
承诺,所以无论是否有任何新消息,都会执行此承诺。
request.done(function(msg) {
if(msg !== null && msg !== "") {
$("#chat").html(msg);
scroll();
}
});
您需要的就是上述内容。
相关文章:
- 幻灯片滚动javascript不起作用
- 将视口底部滚动到元素底部
- jQuery Lazy加载动画滚动
- 设置滑块分区上的滚动
- 结合jQuery和jetpack无限滚动
- 单击顶部导航时如何进行向下滚动效果(向下滑动).
- Ajax聊天消息重复而不仅仅是更新
- 滚动到容器中的下一个元素-几乎到了
- 聊天刷新和向下滚动到最新消息的功能不起作用
- 仅当收到 Ajax 请求的字符串消息时,才滚动到底部
- 有什么方法可以隐藏搜索栏,直到用户向上滚动..类似于iPhone上的消息应用程序
- 显示滚动文本消息
- 添加新消息后滚动到底部
- PHP和AJAX消息框在用户滚动上滚动
- 我似乎无法让jquery的新消息滚动在我的代码中工作
- 在窗口顶部单击显示消息,而无需向上滚动到顶部
- 显示滚动消息-不工作
- 滚动iframe的Javascript?(如Facebook消息)
- 使用ScrollTo jQuery插件提交表单后滚动到错误和成功消息
- 聊天,将滚动条设置在底部并附加新消息