TEL:400-8793-956
当前位置:程序、服务器

AJAX附加,而不是使用.HTML进行聊天

提问者: 近期获赞: 浏览人数: 发布时间:2021-03-18 10:04:32

 问:因此,基本上,我现在的聊天方式如下:

每隔第二秒,它就会检查我的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”;
然后附加它们。我没有看到为什么该方法不起作用的原因。
上一篇: 添加表头和身体元素代码挑战
下一篇: FixedUpdate方法中的“ Speed”字符串有什么作用?