#javascript #jquery #ruby-on-rails
#javascript #jquery #ruby-on-rails
Вопрос:
Я использую .submit()
для периодической отправки моей формы через ajax, но я хочу, чтобы пользователь видел, что форма сохраняется с помощью вращающегося колеса, а затем «Сохраняется!» в случае успеха. Есть ли success
триггер для .submit()
в jQuery?
Спасибо!
Ответ №1:
Попробуйте это:
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@site.com':
$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()
еще раз, но на этот раз без аргументов, чтобы запустить событие отправки.
Комментарии:
1.
something
часть вашего ответа кажется мне запутанной.
Ответ №2:
Вы можете использовать $.post()
запрос вручную вместо .submit()
. $.post()
Обратный вызов выполнен успешно.
Вам нужно будет заполнить детали $.post()
(целевой URL) и .serialize()
элементов вашей формы.
Ответ №3:
Чтобы показать вращающееся колесо при отправке страницы, попробуйте получить анимированный GIF (есть много бесплатных кругов загрузки). Этот GIF-файл реализован на вашей странице с:
class="myloadingcircle" style="display:none"
а затем используйте jQuery:
$("form").submit(function(e) { $(".myloadingcircle").show(); });
Комментарии:
1. Это не работает в сочетании с проверкой формы. Вращающееся колесо будет отображаться, даже если форма недопустима.