gpt4 book ai didi

javascript - 像 Facebook 聊天系统一样向上滚动加载数据

转载 作者:行者123 更新时间:2023-12-01 00:34:54 25 4
gpt4 key购买 nike

我正在开发一个聊天系统,我需要在向上滚动功能上显示聊天历史记录,例如 Facebook 聊天系统。

有人可以帮我吗?

最佳答案

事情会是这样的......

HTML

<div id="chatBox">
<div class='inner'>
<?php foreach($messages as $m){;?>
<div class='message'><?php echo $m;?></div>
<?php ;};?>
</div>
</div>

JQUERY

$(document).ready(function(){           
$("#chatBox").scrollTop($("#chatBox")[0].scrollHeight);

$('#chatBox').scroll(function(){
if ($('#chatBox').scrollTop() == 0){

// Do Ajax call to get more messages and prepend them
// To the inner div
// How you paginate them will be the tricky part though
// You'll likely have to send the ID of the last message, to retrieve 5-10 'before' that

$.ajax({
url:'getmessages.php',
data: {idoflastmessage:id}, // This line shows sending the data. How you get it is up to you
dataType:'html',
success:function(data){
$('.inner').prepend(data);
$('#chatBox').scrollTop(30); // Scroll alittle way down, to allow user to scroll more
};
});
}
});

});

EXAMPLE HERE

// GENERATE FIRST BATCH OF MESSAGES
//This will be where you do your SQL and PHP first
for(var i=0;i<20;i++){
$('.inner').prepend('<div class="messages">First Batch messages<br/><span class="date">'+Date()+'</span> </div>');}


$("#chatBox").scrollTop($("#chatBox")[0].scrollHeight);

// Assign scroll function to chatBox DIV
$('#chatBox').scroll(function(){
if ($('#chatBox').scrollTop() == 0){
// Display AJAX loader animation
$('#loader').show();

// Youd do Something like this here
// Query the server and paginate results
// Then prepend
/* $.ajax({
url:'getmessages.php',
dataType:'html',
success:function(data){
$('.inner').prepend(data);
};
});*/
//BUT FOR EXAMPLE PURPOSES......
// We'll just simulate generation on server


//Simulate server delay;
setTimeout(function(){
// Simulate retrieving 4 messages
for(var i=0;i<4;i++){
$('.inner').prepend('<div class="messages">Newly Loaded messages<br/><span class="date">'+Date()+'</span> </div>');
}
// Hide loader on success
$('#loader').hide();
// Reset scroll
$('#chatBox').scrollTop(30);
},780);
}
});
body {font-family:Arial;}
#chatBox {width:300px;height:400px;border: 1px solid;overflow:scroll}
#loader {display:none;}
.messages {min-height:40px;border-bottom:1px solid #1f1f1f;}
.date {font-size:9px;color:#1f1f1f;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="chatBox">
<!--Loading ANIMATION-->
<img id="loader" src='http://opengraphicdesign.com/wp-content/uploads/2009/01/loader64.gif'>
<!--END LOADING ANIMATION-->

<div class='inner'>
<!-- WHERE YOU WILL LOAD CONTENT-->
</div>
</div>
这个例子只是展示了一个快速而肮脏的滚动,带有前置。没有ajax调用或任何东西。但你明白了

它可能会比我上面发布的内容更复杂一些......以避免重复数据等

而且,您需要向服务器发送最后一篇文章的 ID 或各种分页数据,以便它知道接下来要检索什么。你如何做到这一点是你的选择。

但基本上,您将查询服务器,并检索接下来的 10 个帖子,并在 foreach 循环中回显它们,然后获取该 html 并显示它

关于javascript - 像 Facebook 聊天系统一样向上滚动加载数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24450304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com