Выполняется запрос Ajax jQuery
есть ли способ проверить, выполняется ли запрос ajax? Что-то вроде:
if ( $.ajax.inProgress ){ do this; } else { do that; }
5 ответов
вы должны в основном установить переменную поверх набора скриптов в false
и на ajax initiate установите его в true
и success
обработчик установил его в false
снова описано здесь.
да нет
$.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')
}
});
the beforeSend будет делать процесс, который вам нужно сделать, когда запрос ajax только что начался и полное будет вызван, когда запрос ajax будет завершен.
документация
прервать запрос ajax, Использовать
if($.active > 0){
ajx.abort();//where ajx is ajax variable
}
для продолжения выполнения ajax-запроса, Использовать
if($.active > 0){
return;
}
вам может понравиться это:
$(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);
});
});
});
Если вы полностью контролируете код javascript, вы можете увеличить переменную при запуске запроса ajax и уменьшить ее по завершении запроса (с успехом, сбоем или таймаутом). Таким образом, вы всегда знаете, есть ли запрос в процессе.