0

我有一个 DIV,它是从准备好的文档中的 $.get 数据填充的,然后我每 5 秒调用一次 setInterval。如果#are_friends 的html 数据与以前相同,我试图做的是setInterval $.get 的成功,但如果它不同,则再次将数据加载到#are_friends。

有没有人知道我将如何做到这一点或比我试图实施的更好的方法。

<div id="are_friends"></div>


<script type="text/javascript">
    $(document).ready(function() {  
                $.get('<?php echo $siteUrl ?>are_friends.php?userid=<?php echo $userid; ?>', function(data) {
                           $("#are_friends").html(data);
                });


        var auto_refresh = setInterval(
         function ()
        {

            $.ajax({
              url: "<?php echo $siteUrl ?>are_friends.php?userid=<?php echo $userid; ?>",
              success: function(newdata){
                var oldcontent = $("#are_friends").html();
                if(oldcontent != newdata) {
                    $("#are_friends").html(newdata);
                }
              }
            });
        }, 5000); // refresh every 5000 milliseconds
    });
</script> 
4

2 回答 2

0

至少,您可以重用获取数据的函数,如下所示:

  function getData(callback)
  {
        $.ajax({
          url: "<?php echo $siteUrl ?>are_friends.php?userid=<?php echo $userid; ?>",
          success: function(newdata){
            callback(newdata);
          }
        });
  }

  $(document).ready(function() 
  {  
        getData(function(data)
        {
            $("#are_friends").html(data);
        });

        var auto_refresh = setInterval(function ()
        {
            getData(function(newdata)
            {
                if($("#are_friends").html() != newdata) {
                    $("#are_friends").html(newdata);
                }
            });
        }, 5000);
    });

实际上,初始调用和后续调用是一样的,那为什么不重用呢?

于 2012-11-14T17:06:58.320 回答
0

这与您正在使用的数据有很大关系。现在,您只是在产生大量无用的流量。我建议您在请求 are_friends.php 时也发送一些当前状态标记。PHP 将使用该标记检查是否有更改并返回“无更改”或更新的 HTML。如果没有任何更改并且流量减少(假设大多数请求将返回“无更改”),您应该在此处降低服务器负载。但又一次。这取决于你在 are_friends.php 中做什么,你需要什么数据等等。

于 2012-11-14T17:13:18.500 回答