Постоянное обновление части веб-страницы через N секунд путем вызова функции с параметрами - PullRequest
0 голосов
/ 03 февраля 2020

Подобные вопросы уже были на SO. К сожалению, ни один из них, кажется, не работает для меня.

У меня есть вкладка аккордеона, где может быть несколько аккордеонов в зависимости от количества устройств, которые есть у вошедшего в систему пользователя. Я храню ключ для каждого устройства в аккордеоне, который мне нужно передать в качестве параметра функции, вызывающей refre sh состояние устройства.

$(document).ready(function() {
  $('.accordion').on('show.bs.collapse', function(e) {
    var deviceId = $(e.target).attr('device-id');
    var data = {
      'host_name': $(e.target).attr('device-host-name'),
      'host_key': $(e.target).attr('device-host-key')
    };
    updateAppsStatus(deviceId, data)
  });
});

function updateAppsStatus(deviceId, data) {
  var spinner = '<div class="m-3 text-center"><i class="fas fa-spinner fa-spin"></i><br>Loading...</div>';
  if ($('#appsStatus-' + deviceId).is(':empty')) {
    $('#appsStatus-' + deviceId).html(spinner);
    $.ajax({
      url: "{{ path('app_apps_status') }}",
      type: "POST",
      dataType: "json",
      data: data
    }).done(function(data) {
      $('#appsStatus-' + deviceId).html(data);
    })
  }
  setTimeout(updateAppsStatus, 5000, deviceId, data)
}
...