Идет запрос Ajax jQuery - PullRequest
       3

Идет запрос Ajax jQuery

11 голосов
/ 20 мая 2010

Есть ли способ проверить, выполняется ли запрос ajax? Что-то вроде:

if ( $.ajax.inProgress ){ do this; } else { do that; }

Ответы [ 5 ]

11 голосов
/ 20 мая 2010

да, есть


$.ajax({
     type: 'get',
     url: 'url',
     data: {
              email: $email.val()
     },
     dataType: 'text',
     success: function(data)
     {
        if(data == '1')
        {
            $response.attr('style', '')
                     .attr('style', "color:red;")
                     .html('Email already registered please enter a different email.');
        }
        else
        {
            $response.attr('style', '')
                     .attr('style', "color:green;")
                     .html('Available');
        }
     },
     beforeSend: function(){
                $email.addClass('show_loading_in_right')
     },
     complete: function(){
                $email.removeClass('show_loading_in_right')
     }
});


beforeSend выполнит процесс, который вам необходим, когда только что начался запрос ajax, и complete будет вызван, когда запрос ajax завершится.
Документация

7 голосов
/ 20 мая 2010

Вы должны в основном установить переменную поверх сценария, установленную на false, а при запуске ajax установить ее на true, а в обработчике success установить ее на false снова, как описано здесь .

5 голосов
/ 17 января 2014

Отменить запрос AJAX, Используйте

if($.active > 0){ 
ajx.abort();//where ajx is ajax variable
}

Чтобы продолжить выполнение ajax-запроса, Используйте

if($.active > 0){ 
return;

} 
4 голосов
/ 20 мая 2010

Вам может понравиться это:

$(document).ready(function() {
    var working = false;
    $("#contentLoading").ajaxSend(function(r, s) {
        $(this).show();
        $("#ready").hide();
        working = true;
    });

    $("#contentLoading").ajaxStop(function(r, s) {
        $(this).hide();
        $("#ready").show();
        working = false;
    });

    $('#form').submit(function() {
        if (working) return;
        $.post('/some/url', $(this).serialize(), function(data){
            alert(data);
        });
    });
});
1 голос
/ 20 мая 2010

Если вы полностью контролируете код javascript, вы можете увеличивать переменную всякий раз, когда запускаете запрос ajax, и уменьшать ее, когда запрос завершается (с успехом, неудачей или тайм-аутом). Таким образом, вы всегда будете знать, есть ли запрос в процессе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...