AJAX Jquery刷新所有内容,但我只想要新内容

时间:2011-04-21 02:33:09

标签: ajax jquery partial-page-refresh

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

我看了看互联网上的解决方案,褪色等等,我想不出怎么做到这一点,肯定有一些好的,简单有效的方式?

3 个答案:

答案 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

这将传递加载页面的时间,并且仅在添加了新内容时才刷新数据,请参阅第一个答案。

一切顺利;)。