0

我可能正在重新发明轮子,但这是故意的。我正在尝试使用 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>";
    }

我已经在互联网上寻找解决方案,褪色等,我想不出如何做到这一点,肯定有一些不错,简单有效的方法吗?

4

3 回答 3

1

您应该将时间戳传递给上次更新的服务器,并且只检索新内容。

于 2011-04-21T02:38:02.193 回答
0

这是您需要的,您只需根据需要对其进行修改:

仅在将新内容添加到数据库时才刷新 div 的内容

这将通过页面加载的时间,并且只有在添加了新内容时才会刷新数据,请参阅第一个答案。

一切顺利 ;)。

于 2013-04-26T18:23:06.817 回答
0

我个人在我的喊话框中使用的最佳解决方案是在加载的数据中使用全局变量设置一个变量。

例子:

<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 或最后一个时间戳,或者???

于 2011-04-21T02:40:03.620 回答