jQuery .submit()成功或失败触发器

时间:2011-11-11 04:28:36

标签: javascript jquery ruby-on-rails

我正在使用.submit()定期在ajax上提交表单,但我希望用户看到表单是用旋转轮保存然后“已保存!”一旦成功。 jQuery中success是否有.submit()触发器?

谢谢!

3 个答案:

答案 0 :(得分:17)

试试这个:

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 :(得分:6)

您可以使用手动$.post()请求代替.submit()$.post()成功回调。

您必须填写$.post()(目标网址)和.serialize()表单元素的详细信息。

答案 2 :(得分:1)

要在提交页面时显示旋转轮,请尝试获取动画GIF(有很多免费加载圈)。这个GIF在您的页面中实现:

class="myloadingcircle" style="display:none"

然后使用jQuery:

$("form").submit(function(e) { $(".myloadingcircle").show(); });