首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果setInterval上的.get()数据相同,如果重装数据不同,则不执行任何操作

问如果setInterval上的.get()数据相同,如果重装数据不同,则不执行任何操作
EN

Stack Overflow用户
提问于 2012-11-15 01:01:08
回答 2查看 151关注 0票数 0

我有一个DIV,它是由文档上的$.get数据填充的,然后我每5秒调用一次setInterval。我尝试做的是在setInterval $.get成功的时候,如果#are_friends的html数据和以前一样,什么也不做,但是如果它不同,那么就再次将数据加载到#are_friends中。

有没有人知道我会怎么做,或者是比我正在尝试实现的更好的方式。

代码语言:javascript
复制
<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> 
EN

回答 2

Stack Overflow用户

发布于 2012-11-15 01:06:58

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

代码语言:javascript
复制
  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);
    });

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

票数 0
EN

Stack Overflow用户

发布于 2012-11-15 01:13:19

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13383550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档