Загрузка gif в ожидании ответа AJAX

Мне было интересно, могу ли я получить некоторые указатели. Я пытаюсь использовать gif загрузки, получая ответ от запроса ajax. Проблема, с которой я сталкиваюсь, заключается в том, что она не отображает gif при отправке электронной почты.

Я просмотрел несколько страниц здесь, чтобы попытаться найти решение, но ни один из них, похоже, не работает. Это страницы, на которые я смотрел: Загрузка gif-изображения во время работы jQuery ajax и Отображение загрузки изображения во время публикации с помощью ajax и Отображение загружаемого изображения при выполнении $.ajax

Для этого я использовал следующий код:

$("#loading").bind("ajaxStart", function(){
$(this).show();
}).bind("ajaxStop", function(){
$(this).hide();
});

Это не показывает gif, я также пробовал следующее:

$.ajax({
 type: "POST",
 url: "contact1.php",
 data: dataString,
 beforeSend: loadStart,
 complete: loadStop,
 success: function() {
  $('#form').html("<div id='msg'></div>");
  $('#msg').html("Thank you for your email. I will respond within 24 hours. Please reload the page to send another email.")
 },
 error: function() {
  $('#form').html("<div id='msg'></div>");
  $('#msg').html("Please accept my apologies. I've been unable to send your email. Reload the page to try again.")
 }
}); 
return false;
});
function loadStart() {
  $('#loading').show();
}
function loadStop() {
  $('#loading').hide();
}

Я также попытался поставить $ ("# loading"). Show() перед запросом ajax и отключить.hide() в функциях успеха и ошибки. Я до сих пор ничего не показываю.

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

Ответ 1

На самом деле вам нужно это сделать, прослушивая события ajaxStart и Stop и привязывая их к document:

$(document).ready(function () {
    $(document).ajaxStart(function () {
        $("#loading").show();
    }).ajaxStop(function () {
        $("#loading").hide();
    });
});

$(document).ajaxStart(function() {
  $("#loading").show();
}).ajaxStop(function() {
  $("#loading").hide();
});

$('.btn').click(function() {
  $('.text').text('');
  $.ajax({
    type: "GET",
    dataType: 'jsonp',
    url: "https://api.meetup.com/2/cities",
    success: function(data) {
      $('.text').text('Meetups found: ' + data.results.length);
    }
  });
});
#loading { display: none; }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button type="button" class="btn">Click Me!</button>
<p class="text"></p>
<div id="loading">
  <!-- You can add gif image here 
  for this demo we are just using text -->
  Loading...
</div>