2014-03-28 49 views
0

大家好我正在上一个社交网站,我有一个聊天框。 一切工作正常在聊天箱中,除了我必须每5秒后重新加载div来获取新的消息,这对我造成一些问题,就像同样的数据库查询将在每5秒钟一次又一次运行一遍。并且每次聊天箱重新加载时滚动条都会顶起,我无法将其设置为每5秒钟滚动到底部,因为可能有人正在阅读消息,并且他不想一次又一次滚动该框。 所以简而言之,我想问的是,是否有任何其他方式在聊天框中创建新消息。 如果这是唯一的方法,你可以请告诉我如何编码这个逻辑 如果滚动是从div底部以上10px以上滚动到底部和追加新的消息,其他明智只是追加新的消息。聊天并使滚动条置于底部并追加新消息。

这里是我的代码:

var autoload1 = setInterval(
    function showthemess1() 
    { 
    $.ajax({ 
     type: 'POST', 
     url: 'chitchatback2.php', 
     data: {'chattingwith':"<?=$nameIS2['id']?>"}, 
     success: function(chats){ 
     $("#chatboxdiv").empty().append(chats); 
     } }); 
    }, 5000); 

制作滚轮来的底部i可以像

$(".bechmsgbox").animate({ 
scrollTop: $("#chatboxdiv")[0].scrollHeight 
},'slow'); 
+0

考虑只加载异步的新消息。因此,当最后一次请求完成后,每5秒向服务器发送一个请求,并将时间戳作为参数。服务器只响应新的消息,如果有的话。这些新消息会附加到聊天框内容。从服务器接收到响应时,保存下一个请求的当前时间。 快速提琴没有请求,并通过点击按钮手动加载:http://jsfiddle.net/sQ6ZP/ – Capricorn

回答

0

我的建议是使用sockets对于这种情况。
尝试this示例以及

0

您应该将最新请求的帖子ID存储在变量中,只请求新帖子并追加这些帖子。

相关问题