PHP, jQuery (AJAX) - Refre sh Информация - PullRequest
1 голос
/ 01 апреля 2020

Refre sh информация, только когда она новая, не всегда.

Обновление данных только тогда, когда они отличаются от ответа.

<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 Ответ

1 голос
/ 01 апреля 2020

Этого можно достичь, сохранив ответ в переменной, а затем сравнив новый ответ. Если они одинаковые, не выполняйте никаких действий.

Также обратите внимание, что 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.

...