仅在 AJAX 数据更改时使用 console.log()

4
我做了这个:
<script type="text/javascript">
    $('.storage').html("");
    setInterval(function(){
        $.get('./playcommand.php', function(data) {
            if($('.storage').html() !==  data){
              $('.result').html(data);
              console.log("neu");
            }
        });
    }, 500); // 5 seconds
</script>

我的意图是仅在AJAX数据与之前的数据不同的情况下记录console.log("neu");,因此我创建了一个名为"storage"的div来保存最新的数据,该数据与之前的数据不相等。

但它不起作用,即使数据没有更改,它也始终记录"neu"。

更新:

我的新代码:

 <script type="text/javascript">
    var storage = $('.storage').text();
    setInterval(function(){
        $.get('./playcommand.php', function(data) {
            if($('.storage').text != data){
              $('.result').html(data);
              console.log("neu");
            }
        });
    }, 500); // 5 seconds
</script>

仍然不起作用。

1
尝试将 if($('.storage').html() !== data){ 更改为 if($('.storage').text() !== data){ - Scott Marcus
$('.storage').html()的值是什么?data的值呢?它们有可能相同吗?请注意,您的代码似乎从未修改过$('.storage').html()的值。 - David
2
500不是5秒,而是半秒钟。在末尾加一个0。 - klenium
兄弟,发帖前花半秒钟时间格式化一下你的代码吧。 - Scott Marcus
1
为什么要添加另一个元素?为什么不使用变量或使用.result元素? - HTMHell
显示剩余3条评论
2个回答

2
由于您在比较之前加了空格。请从第一行中删除这一行,
 $('.storage').html("");

或者将字符串保存在一个变量中进行比较。
 var storage = $('.storage').text();
 $('.storage').html("");

然后将datastorage进行比较。

<script type="text/javascript">
     var storage = $('.storage').text().trim();;
     $('.storage').html("");
     setInterval(function(){
        $.get('./playcommand.php', function(data) {
            if(storage != data.trim()){
              $('.result').html(data);
                console.log("neu");
            }
        });
    }, 500);
</script>

仍然是同样的问题 :( - Apple Web
分享确切的两个字符串,或者尝试将其中一个作为静态字符串放置,例如 if (storage === 'mytext')。如果它可以运行,那么你需要使用 trim 函数或者数据是不正确的。 - Niklesh Raut
@AppleWeb:你试过这个解决方案吗? - Niklesh Raut

1
在你的代码中
 $('.storage').html("");

这一行使存储空白,请删除它或将其放置在函数之后。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接