2013-03-05 4 views
0

Я пытаюсь совместить jQuery validation plugin с сообщением Ajax. Это мой код:Проверка 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), но представляемые значения равны нулю. Что я здесь делаю?

ответ

1

this ссылается на объект валидатор, который вы претендуете на форму, так что изменить:

data: $(this).serialize(), 

в

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

Большое спасибо! Пятно на! – bikey77

0

Используйте jQuery.form плагин и попробовать его, как показано ниже,

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

     }, 
     success : function(msg) 
     { 
      return false; 
     } 
    }); 
} 
Смежные вопросы