我可能正在重新发明轮子,但那是故意的。我正在尝试使用PHP HTML MySQL CSS创建一个实时聊天应用程序。它在网络上运行良好,每秒都能获取新内容。在IE中你可以注意到每秒闪烁一次,看起来它一次又一次地拉动所有数据,即使没有新内容,我也不喜欢。
这是我的刷新JS代码:
$(document).ready(function() {
$("#data").load("data.php");
var refreshId = setInterval(function() {
$("#data").load('data.php');
}, 1000);
$.ajaxSetup({ cache: false });
});
data.php只需一段时间循环遍历所有数据库记录并显示它们:
while ($row = mysql_fetch_array($result))
{
echo "<p><b>". $poster ."</b>: ". $message ."<br /><span style='font-size: 10px;'>". date('D d M - g:i:s a', strtotime($row['when'])) ."</span></p>";
}
我看了看互联网上的解决方案,褪色等等,我想不出怎么做到这一点,肯定有一些好的,简单有效的方式?
答案 0 :(得分:1)
您应该将时间戳传递给上次更新的服务器,并仅检索新内容。
答案 1 :(得分:0)
我个人在我的shoutbox中使用的最佳解决方案是使用全局变量在加载的数据中设置变量。
示例:
<script type="text/javascript">
var global_var = 1234;
</script>
<p>HTML CONTENT GOES HERE</p>
然后,当您调用data.php时,可以使用此新参数调用它。
$("#data").load('data.php?var=' + global_var );
您的global_var可以是任何内容,从最后插入的ID或上一个时间戳,或???
答案 2 :(得分:0)
这是您所需要的,您只需根据需要进行修改:
Refresh a div's content only if new content is added to the database
这将传递加载页面的时间,并且仅在添加了新内容时才刷新数据,请参阅第一个答案。
一切顺利;)。