Подтвердить что ты не робот

Загрузка gif-изображения при запуске jQuery ajax

Я пытаюсь показать загрузочный образ, пока мой вызов ajax запущен, однако использование атрибута beforeSend не меняет область результатов.

$.ajax({
  url: "/answer_checker.php",
  global: false, type: "POST", 
  data: ({...clipped...}), 
  cache: false,
  beforeSend: function() {
    $('#response').text('Loading...');
  },
  success: function(html) {
    $('#response').html(html);
  }
}

Спасибо заранее.

4b9b3361

Ответ 1

У меня есть решение, возможно, это не лучший способ, но он работал в этом случае.

$('input').keyup(function () {

  $('#response').text('loading...');

  $.ajax({
    url: "/answer_checker.php",
    global: false, type: "POST", 
    data: ({...clipped...}), 
    cache: false,
    success: function(html) {
      $('#response').html(html);
    }
  });
});

Устанавливая содержимое резонатора перед вызовом функции ajax, он остается отображающим текст загрузки, пока вызов ajax не обновит один и тот же контент.

Спасибо всем, кто нашел время, чтобы ответить.

Алан

Ответ 2

У меня была аналогичная проблема. Чтобы решить проблему, я заменил .text в разделе beforeSend на .html и создал тэг html для вставки в элемент, который содержит мой статус. Функция успеха не заменила содержимое, созданное функцией .text(), но оно заменило содержимое, созданное функцией .html().

$.ajax({
  url: "/answer_checker.php",
  global: false, type: "POST", 
  data: ({...clipped...}), 
  cache: false,
  beforeSend: function() {
    $('#response').html("<img src='/images/loading.gif' />");
  },
  success: function(html) {
    $('#response').html(html);
  }
}

Ответ 3

У вас есть отсутствовала запятая после cache: false

Ответ 4

Вы также можете использовать следующее:

$('#tblLoading').ajaxStart(function() { $(this).show(); });
$('#tblLoading').ajaxComplete(function() { $(this).hide(); });