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。
刷新信息,只有当它是新的,而不是总是。
仅在与响应不同时更新数据。
<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。