Измените содержимое загрузчика по истечении определенного времени, не обновляя страницу - PullRequest
0 голосов
/ 22 января 2019

У меня есть загрузочный счетчик для вызовов AJAX. Итак, я хотел бы изменить текст на дисплее через 10 секунд, чтобы сказать пользователю «Пожалуйста, подождите, все еще обрабатывает ...». Пользователи меняют название компании из выпадающего списка.

function showAjaxLoader() {
  if ($('#loader').length <= 0) {
    $('body').append('<div style="display:none;"><div id="loader" class="stepLoader"><p>Loading...</p></div></div>');
    setTimeout(function() {
      $('#loader p').replaceWith('<span style="font-size:12px; font-weight:bold;">Please wait, still processing...<span>');
    }, 10000);
  } else {
    $('#loader .spinner').remove();
  }
}

Это решение отлично работает. Однако, когда пользователь меняет название компании, загрузчик по-прежнему показывает сообщение «Пожалуйста, подождите, все еще обрабатываете ...». Должно появиться сообщение «загрузка ...». Я вызываю эту функцию;

 beforeSend: showAjaxLoader(),

Любые предложения будут высоко оценены.

1 Ответ

0 голосов
/ 22 января 2019

как вариант, вы можете полностью удалить загрузчик из DOM. Я ожидаю, что у вас также есть метод hideAjaxLoader, который должен делать $('#loader').remove().

или если вы используете showAjaxLoader для обеих операций, лучше переименовать его в toggleAjaxLoader и выполнить полную очистку в else, поэтому вместо $('#loader .spinner').remove(); вы получите $('#loader').remove();

С одной стороны, будет хорошей практикой, если вы очистите тайм-аут, если данные поступили раньше, чем через 10 секунд.

...