jQuery验证之后阿贾克斯后

问题描述:

我试图jQuery的validation plugin阿贾克斯后结合。这是我的代码:jQuery验证之后阿贾克斯后

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响应),但提交的值为空。我在这里干什么?

this指的是你申请的形式验证对象,所以改变:

data: $(this).serialize(), 

data: $(form).serialize(), 
+0

非常感谢您!发现! – bikey77 2013-03-05 09:29:20

使用jQuery.form插件和尝试如下,

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

     }, 
     success : function(msg) 
     { 
      return false; 
     } 
    }); 
}