Ответ 1
Вы можете использовать ручной запрос $.post()
вместо .submit()
. $.post()
имеет успешный обратный вызов.
Вам нужно будет заполнить детали $.post()
(целевого URL) и .serialize()
ваших элементов формы.
Я использую .submit()
для отправки моей формы через ajax периодически, но я хочу, чтобы пользователь увидел, что форма сохраняется с вращающимся колесом, а затем "Сохранено!". после успеха. Есть ли в jQuery триггер success
для .submit()
?
Спасибо!
Вы можете использовать ручной запрос $.post()
вместо .submit()
. $.post()
имеет успешный обратный вызов.
Вам нужно будет заполнить детали $.post()
(целевого URL) и .serialize()
ваших элементов формы.
Попробуйте следующее:
JQuery
$(document).ready(function() {
$('#form').submit(function() {
var status = '<img class="loading" src="loading_detail.gif" alt="Loading..." />';
$("#ajax").after(status);
$.ajax({
type: 'POST',
url: $(this).attr('action'),
data: $(this).serialize(),
dataType: 'json',
success: function(json) {
if(json.type == 'success') {
$('#msg').css("color","green").html(json.message);
} else if(json.type == 'warning'){
$('#msg').css("color","yellow").html(json.message);
} else if(json.type == 'error'){
$('#msg').css("color","red").html(json.message);
}
$('.loading').remove();
}
})
return false;
});
});
Html:
<div id="msg"></div>
<form id="form" method="post" action="action.php" >
<input type="text" name="email" />
<input type="submit" name="submit" value="submit" /><span id="ajax"></span>
</form>
action.php:
<?php
if(isset($_POST['email'])){
$val = $_POST['email'];
switch ($val) {
case '[email protected]':
$return = array('type'=>'success', 'message'=>'This is success message!'); break;
case 'email':
$return = array('type'=>'warning', 'message'=>'This is warning message!'); break;
default:
$return = array('type'=>'error', 'message'=>'This is error message!');
}
echo json_encode($return);
}
?>
Примечание:
Если вы программно представляете форму, вам нужно вызвать $('#form').submit()
еще раз, но на этот раз без аргументов, чтобы вы запускали событие отправки.
Чтобы показать вращающееся колесо при отправке страницы, попробуйте получить анимированный GIF (есть много свободных кругов загрузки). Этот GIF-проект на вашей странице:
class="myloadingcircle" style="display:none"
а затем используйте jQuery:
$("form").submit(function(e) { $(".myloadingcircle").show(); });