为了账号安全,请及时绑定邮箱和手机立即绑定

PHP, jQuery (AJAX) - 刷新信息

PHP, jQuery (AJAX) - 刷新信息

PHP
墨色风雨 2022-12-03 10:43:27
刷新信息,只有在它是新的时候,而不是总是。仅在与响应不同时更新数据。<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>
查看完整描述

1 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

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


另请注意,html()andattr()仅分别接受一个和两个参数,因此可以删除每次调用中的最后一个参数。在任何情况下,首选做法是使用prop()over 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。



查看完整回答
反对 回复 2022-12-03
  • 1 回答
  • 0 关注
  • 126 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号