问:因此,基本上,我现在的聊天方式如下:
每隔第二秒,它就会检查我的PHP文件loadchat.php。
Loadchat.php将获得比其会话新的每一行。
然后,它使用.html()函数替换div:#chatbox中的所有当前数据。
现在这是交易。一次又一次地加载所有行,这似乎很耗资源。我知道有一种方法可以通过使用.append()函数来对此进行优化。
尽管如此,我似乎无法将自己的头缠住它。
我需要做一个计数器,或者在加载最后一条消息时设置时间戳,以检查是否有比自上次加载以来的内容(行)新的内容(行)(如果有的话),追加新内容。
如果将.html函数替换为.append,那么就像现在一样,我将不断获得相同的消息。
我要怎么做呢?
提前致谢。
// AJAX超时循环加载聊天功能:
function loadChat (){ $ 。ajax ({ method :'POST' ,url :'ajax / load_chat.php' ,success :function (data ){ $ ('#chatbox' )。html (data ); //console.log($('#chatbox ')[0] .scrollHeight-$('#chatbox')。innerHeight()); //console.log($('#chatbox')。scrollTop()); if (atBottom ){ $ (“ ” )。
停止()。动画({ scrollTop : $ ('#chatbox' )[ 0 ] 。scrollHeight }, 500 );
} },}); }
答:追加应该工作。
<!DOCTYPE html>
< html >
< head >
< meta charset = “ utf-8” > < title >测试</ title > </ head > < body > < div id = “ chat1” > </ div > < div id = “ chat2” > </ div > <脚本src = “ https://code.jquery.com/jquery-1.11.3.min.js” ></脚本> <
脚本>
var chatMonitor1 =窗口。setInterval (html ,2000 ); var chatMonitor2 = window 。setInterval (append ,2000 ); // Foo函数html (){ $ ('#chat1' )。html ('Foo' ); } // Bar Bar Bar Bar Bar Bar Bar ...函数append (){ $ ('#chat2' )。追加(
'Bar' );
}
</脚本> </正文> </ html >
设置您的load_chat.php文件以通过时间戳或键从数据库中获取最新记录,然后仅返回新记录。
$ query =“选择作者,帖子,id,时间戳,来自chatDB,其中id> $ lastPostId”;
然后附加它们。我没有看到为什么该方法不起作用的原因。