在jQuery中验证后发送POST数据

时间:2014-12-12 16:58:07

标签: jquery jquery-validate

我在验证表单后发送帖子数据有点问题。它不起作用,我不知道为什么。

这是我用于验证的jQuery函数:

(function($,W,D)
{ 
var jquery = {};
jquery.UTIL =
{
    setupFormValidation: function()
    {
        $("#register").validate({ 

           rules: {
              -- rules--
            },
            messages: {
              -- messages--
            },
            submitHandler: function(form) {
            $.post('register.php', $(form).serialize(), function (data, textStatus) {
            form.submit();
            },'json');
            }
        });
    }
}
$(D).ready(function($) {
    jquery.UTIL.setupFormValidation();
});
})(jQuery, window, document);

所以我只想将名为:name,surname,email和password的数据发送到php页面。这不是我的验证(我刚刚发现了这个),所以也许它的错误呢?我知道发送帖子数据的代码应该在submitHandler内,但我不知道在这种情况下应该怎么看。

如果有人需要,这是我的表格

 <form id="register" method="post" action="">  <br><br>
                <label for="name"></label><input placeholder="imię" type="text" name="name" id="name"> 
                <input placeholder="nazwisko" type="text" name="surname" id="surname"> 
                <input placeholder="e-mail" type="text" name="email" id="email">
                <input placeholder="hasło" type="password" name="pass" id="pass">
                <input placeholder="powtórz hasło" type="password" name="pass_confirm"     id="pass_confirm"> 
                <input type="submit" value="Załóż konto"/>
            </form>      

3 个答案:

答案 0 :(得分:1)

submitHandler仅在您希望根据插件覆盖默认表单操作时使用。

所以在你的代码中......

submitHandler: function(form) {
    $.post('register.php', $(form).serialize(), function (data, textStatus) {
        form.submit();
    },'json');
}

我不明白为什么form.submit()作为$.post()内回调函数的一部分。 $.post()是ajax,form.submit()是标准表单提交(默认插件)。我的猜测是,你是盲目地跟随可怕的jQuery4U教程。

如果您只想执行ajax,那么您的所有代码都可以缩减为此...

$(document).ready(function() {

    $("#register").validate({ 
        rules: {
            //-- rules--
        },
        messages: {
            //-- messages--
        },
        submitHandler: function(form) {
            $.ajax({
                url: 'register.php',
                data:  $(form).serialize(),
                dataType: 'json'
            });
            return false;
        }
    });

});

否则,如果您只想按照<form>元素的属性进行标准表单提交,那么您甚至不需要submitHandler和所有代码可以浓缩成这个......

$(document).ready(function() {

    $("#register").validate({ 
        rules: {
            //-- rules--
        },
        messages: {
            //-- messages--
        }
    });

});

答案 1 :(得分:0)

这取决于您希望代码如何工作,是等待AJAX​​调用还是要在代码中发送表单

$.post('register.php', $(form).serialize(), function (data, textStatus) {
           form.submit();
        },'json');

此代码正在使用JQuery JQuery帖子发出一个AJAX帖子请求,如果你在提交表单的成功函数上有这个奇怪的部分。

因此,如果您想进行ajax调用,请确保您要提交表单或在通话后要执行的操作。如果您只想提交表单而不是ajax帖子,只需发送表单提交。

form.submit();

答案 2 :(得分:0)

好像你$.post() submitHandler中的$(form).submit()是不必要的,只需简单地{{1}}即可。