Ajax表单:第二次提交表单导致无法显示成功消息

时间:2013-02-16 13:26:27

标签: javascript jquery ajax forms submit

我编写了一个AJAX表单脚本。提交后,表单将在PHP中验证。如果一切正常,则会显示成功消息。如果存在验证错误,我将用户指向相应的字段,以便可以轻松纠正输入。 之后,表格必须再次提交。

使用$("form").submit调用初始函数。为了在更正验证错误后允许重新提交,我

$(".error-msg").click( function () {
    $("form").submit();
});

(是的,通过单击错误消息提交表单。)

有效,我可以看到数据被POST,但没有显示成功消息。为什么?是否有可以递归方式使用的.submit回调?

修改

根据要求 - 更多代码:

$("form").submit(function () {

        var name     = $( "input[name=name]" ),
            mail     = $( "input[name=email]" ),
            message  = $( "textarea[name=message]" );

        var string = "name=" + name.val() + "&email=" + mail.val() + "&message="  + encodeURIComponent(message.val());

        $( "form input" ).attr( "disabled", "true" );
        $( "form textarea" ).attr( "readonly", "true" );

        $.ajax({
            url: "my-form.php",
            type: "POST",
            data: string,
            dataType: "json",
                success: function ( result ) {

                    if ( result.status === "success" ) {

                        alert( "success" );

                    }

                    if ( result.status === "fail" ) {

                            alert( "fail" );

                            $.each( result.data, function( k , v ) {

                                $( "#" + v.field ).removeAttr( "disabled" ).after("<p>" + v.errorMsg + "</p>");

                                $(".error").animate({
                                    opacity: 1
                                }, 500);

                                $(".error").click( function () {
                                    $("form").submit();
                                });

                            });

                    }
                }

        return false;
    })

0 个答案:

没有答案