Я хочу показать сообщение об ошибке, пока не придет ответ ajax. Попробовал с помощью следующего кода:
$.ajax({
url: "user.php",
type: 'POST',
data: $('#forgot-form').serialize(),
beforeSend: function(){
$('#error').html("Please wait until your request is processed.");
setTimeout(function() { $("#error").html(''); }, 8000);
}
} ).done (function(data) {
/* I tried with the commented code also. But this section didn't worked */
//$('#error').html("Please wait until your request is processed.");
// setTimeout(function() { $("#error").html('Please wait until your request is processed.'); }, 8000);
if (data == "success") {
$('#user-login').val('');
$('#error').html("Please check your email to reset your password");
setTimeout(function() { $("#error").html(''); }, 5000);
} else if (data == "invalid") {
$('#error').html("Username or email doesnot exist");
setTimeout(function() { $("#error").html(''); }, 5000);
$('#user-login').focus();
return false;
}
});
В user.php страница, я отправляю электронное письмо пользователю, если данные пользователя верны. Так что ответ приходит только поздно. До этого времени я хочу показать ожидающее сообщение.
Этот код показывает ожидающее сообщение правильно. Но после этого происходит небольшая задержка, после чего отображается только сообщение об успехе. Мне нужно избегать этой задержки. Как я могу изменить код, чтобы избежать задержки?
Может ли кто-нибудь помочь мне сделать это? Заранее спасибо.
Попробуй это:
Просто удалите setTimeout()
от перед отправкой перезвонить. Он покажет сообщение в #error и заменит сообщение после завершения ajax.
$.ajax({
url: "user.php",
type: 'POST',
data: $('#forgot-form').serialize(),
beforeSend: function(){
$('#error').html("Please wait until your request is processed.");
}
} ).done (function(data) {
/* I tried with the commented code also. But this section didn't worked */
//$('#error').html("Please wait until your request is processed.");
// setTimeout(function() { $("#error").html('Please wait until your request is processed.'); }, 8000);
if (data == "success") {
$('#user-login').val('');
$('#error').html("Please check your email to reset your password");
setTimeout(function() { $("#error").html(''); }, 5000);
}
else if (data == "invalid") {
$('#error').html("Username or email doesnot exist");
setTimeout(function() { $("#error").html(''); }, 5000);
$('#user-login').focus();
return false;
}
});
Удалить свой beforeSend()
и установить ожидающее сообщение перед $.ajax
вызов.
$('#error').html("Please wait until your request is processed.");
$.ajax({
url: "user.php",
type: 'POST',
data: $('#forgot-form').serialize(),
}).done (function(data) {
if (data == "success") {
$('#user-login').val('');
$('#error').html("Please check your email to reset your password");
setTimeout(function() { $("#error").html(''); }, 5000);
} else if (data == "invalid") {
$('#error').html("Username or email doesnot exist");
setTimeout(function() { $("#error").html(''); }, 5000);
$('#user-login').focus();
return false;
}
});