繁体   English   中英

PHP、jQuery (AJAX) - 刷新信息

[英]PHP, jQuery (AJAX) - Refresh Information

刷新信息,仅当它是新的时,并非总是如此。

仅在与响应不同时更新数据。

<script>
  $(document).ready(function(){
    setInterval(function() {
      $.ajax({
        type : "POST",
        url : "steam.php",
        cache : false,
        success : function(response) {
          var parsedResponse = $.parseJSON(response);
          $("#Display, [class='card-title display']").html(parsedResponse.display, parsedResponse.display);
          $("#AvatarFull, #AvatarSmall").attr("src", parsedResponse.avatar, parsedResponse.savatar);
          $("#Steam").attr("value", parsedResponse.display);
        }
      });
    }, 1000)
  });
</script>

您可以通过将响应存储在变量中然后比较新响应来实现这一点。 如果它们相同,则不要执行任何操作。

还要注意html()attr()只接受一个和两个参数,因此可以删除每次调用中的最后一个。 在任何情况下,首选做法是使用prop()不是attr() 另外使用val()而不是attr()来更新控件的value 尝试这个:

 $(document).ready(function() { let lastResponse; setInterval(function() { $.ajax({ type: "POST", url: "steam.php", cache: false, success: function(response) { if (response != lastResponse) { var parsedResponse = $.parseJSON(response); $("#Display, [class='card-title display']").html(parsedResponse.display); $("#AvatarFull, #AvatarSmall").prop("src", parsedResponse.avatar); $("#Steam").val(parsedResponse.display); lastResponse = response; } } }); }, 1000) });

尽管如此,我强烈建议您为此使用观察者模式而不是 AJAX 轮询。 这是因为它对服务器资源的压力要小得多,您可以将其配置为仅在新信息可用时发送更新。 如果你想了解更多关于这项研究的 Websockets 和 SignalR。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM