jQuery验证,使用submitHandler提交

时间:2012-06-02 10:42:14

标签: php javascript jquery html jquery-validate

我有一个HTML表单

<form method="POST" action="" name="myform" id="myform">
    <input type="text" name="email" id="email" />
    <input type="supmit" name="submit" id="submit"  value="submit" />
</form>

jQuery的代码:

$(document).ready(function(){
    var validator = $("#myform").validate({
        ignore: ".ignore",
        rules: {...},
        messages: {...},
        submitHandler: function(form) {
            $.post('usr.php?resetpw', $(this).serialize(), function (data, textStatus) {
                form.submit();
                alert(data.inf);
            },'json');
        },
});

以及没有得到$ _POST变量的PHP代码usr.php(isset($_POST['email']) = false

if(isset($_GET['resetpw'])) {
    $loggingData = array(
        'inf' => utf8_encode("Your email address is: ".$_POST['email']),
        'errorEmail' => '',
        'mailExists' => '',
        'success' => '',
    );
}
echo json_encode($loggingData);

什么是将变量发布到PHP的正确代码?

谢谢

3 个答案:

答案 0 :(得分:4)

我刚刚从http://jquery.bassistance.de/validate/jquery.validate.js

检查了validate插件的来源

它正在调用submitHandler这样的

 validator.settings.submitHandler.call( validator, validator.currentForm );

这意味着this将引用validator object而非form,因此请使用form参数来引用表单并序列化它的字段

 $(form).serialize()

答案 1 :(得分:2)

序列化form而非this。 所以submithandler看起来像下面..

submitHandler: function(form) {
        $.post('usr.php?resetpw', $(form).serialize(), function (data, textStatus) {
            form.submit();
            alert(data.inf);
        },'json');
},

答案 2 :(得分:0)

$("#form_id").trigger('submit');

试试这个