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

Jquery Ajax Загрузка изображения

Я хотел бы реализовать загрузочное изображение для моего jquery ajax-кода (это когда обработка jquery все еще обрабатывается) ниже - мой код:

$.ajax({
    type: "GET",
    url: surl,
    dataType: "jsonp",
    cache : false,
    jsonp : "onJSONPLoad",
    jsonpCallback: "newarticlescallback",
    crossDomain: "true",
    success: function(response) {
        alert("Success");
    },
    error: function (xhr, status) { 
        alert('Unknown error ' + status);
    }   
});

Как я могу реализовать загрузочное изображение в этом коде. Благодаря

4b9b3361

Ответ 1

Попробуйте что-то вроде этого:

<div id="LoadingImage" style="display: none">
  <img src="" />
</div>

<script>
  function ajaxCall(){
    $("#LoadingImage").show();
      $.ajax({ 
        type: "GET", 
        url: surl, 
        dataType: "jsonp", 
        cache : false, 
        jsonp : "onJSONPLoad", 
        jsonpCallback: "newarticlescallback", 
        crossDomain: "true", 
        success: function(response) { 
          $("#LoadingImage").hide();
          alert("Success"); 
        }, 
        error: function (xhr, status) {  
          $("#LoadingImage").hide();
          alert('Unknown error ' + status); 
        }    
      });  
    }
</script>

Ответ 2

Описание

Вы должны сделать это, используя jQuery.ajaxStart и jQuery.ajaxStop.

  • Создайте div с вашим изображением
  • Сделать это видимым в jQuery.ajaxStart
  • Скрыть его в jQuery.ajaxStop

Пример

<div id="loading" style="display:none">Your Image</div>

<script src="../../Scripts/jquery-1.5.1.min.js" type="text/javascript"></script>
<script>
    $(function () {
        var loading = $("#loading");
        $(document).ajaxStart(function () {
            loading.show();
        });

        $(document).ajaxStop(function () {
            loading.hide();
        });

        $("#startAjaxRequest").click(function () {
            $.ajax({
                url: "http://www.google.com",
                // ... 
            });
        });
    });
</script>

<button id="startAjaxRequest">Start</button>

Дополнительная информация

Ответ 3

Немного поздно, но если вы не хотите использовать div специально, я обычно делаю это так...

var ajax_image = "<img src='/images/Loading.gif' alt='Loading...' />";
$('#ReplaceDiv').html(ajax_image);

ReplaceDiv - это div, который также вставляет Ajax. Поэтому, когда он появляется, изображение заменяется.

Ответ 4

Обратите внимание, что: ajaxStart/ajaxStop не работает для запроса ajax jsonp (запрос ajax json в порядке)

Я использую jquery 1.7.2 при написании этого.

вот одна из ссылок, которую я нашел: http://bugs.jquery.com/ticket/8338