2017-09-06 30 views
0

在控制檯中獲取此錯誤Uncaught TypeError:form.serialize不是函數。我怎樣才能解決這個錯誤在表單驗證submithandler的Ajax?In form validate的submithandler ajax獲取Uncaught TypeError:form.serialize不是函數

$('#form').validate({ 
       errorClass: 'fieldError', 
       onkeyup:  false, 
       onblur:  false, 
       errorElement:'label', 

       submitHandler: function(form) { 
        $.ajax({ 
         url: form.action, 
         type: form.method, 
         data: form.serialize(), 
         success: function(response) { 
          if (response == false) 
          {alert('could not submit!')} 
         } 

        }); 

       } 
      }); 
+0

使用$( '#形式')序列化() –

+0

FYI - 沒有叫'onblur'這樣的選項。最接近的選項叫做'onfocusout'。 – Sparky

回答

1

按照documentation爲jQuery的驗證插件,該submitHandler回調得到天然形式作爲唯一的參數。

本機窗體沒有serialize()方法,因爲它是一個jQuery方法。
您必須包裝的天然形式$()

submitHandler: function(form) { 

    var $form = $(form); 

    $.ajax({ 
     url  : $form.attr('action'), 
     type : $form.attr('method'), 
     data : $form.serialize(), 
     success : function(response) { 
      if (response == false) { 
       alert('could not submit!')} 
      } 
     }); 
    }); 
}); 
+0

我已經嘗試過這個解決方案,但我是這樣做的var $ form = $(this);所以得到另一個例外。現在修復此解決方案的+1。謝謝先生 ! – Haroon

+1

@Haroon,在'submitHandler'中,'$(this)'是驗證器對象,而不是表單。 – Sparky

相關問題