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