0

jQuery検証プラグインと Ajax の投稿を組み合わせようとしています。これは私のコードです:

PHP フォーム:

<form id="newsletter_form" method="post">
    <input name="newsletteremail" type="text" id="newsletteremail" class="required email">
    <input name="Signup" type="submit" class="formsm" id="Signup" value="Signup">
    <div id="emailerrormessage"></div>
</form>

JQuery:

$('#newsletter_form').validate({
            rules: { 
                email: {required:true, email:true}
            },
            submitHandler: function(form) {
                $.ajax({
                    data: $(this).serialize(),
                    type: "POST",
                    url: "includes/ajax.php?action=newsletter", 
                    contentType: "application/x-www-form-urlencoded; iso-8859-7",
                    dataType: 'json',
                    success: function(response, textStatus, jqXHR) {
                        if(response.status == 'error'){

                            $("#newsletteremail").removeClass().addClass('ajaxerror');
                        } else {
                                                        $("#newsletteremail").removeClass();                            
                        }
                    },
                    error: function (xhr, textStatus, errorThrown) {
                        $("#emailerrormessage").addClass('ajaxsuccess').html(xhr.responseText).show();
                    }
                });
                return false;
            }
        });

validate() を使用する前に、フォームは正常に送信されます。validate() コードを追加すると、検証が機能し、フォームが送信されます (200 OK 応答を受け取ります) が、送信される値は null です。私はここで何をしているのですか?

4

2 に答える 2

1

thisフォームに適用しているバリデータ オブジェクトを参照するため、次のように変更します。

data: $(this).serialize(),

data: $(form).serialize(),
于 2013-03-05T08:52:35.370 に答える
0

jQuery.form プラグインを使用して、以下のように試してください。

submitHandler: function(form)
{
    jQuery(form).ajaxSubmit(
    {
        dataType : 'json',
        beforeSend : function(arr, $form, options)
        {

        },
        success : function(msg)
        {
            return false;
        }
    });
}
于 2013-03-05T08:47:46.843 に答える