[英]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.