2013-12-15 41 views
3

我在過去幾天使用jQuery驗證插件相當多,但尚未使用它與ajax提交。我所擁有的是削減到兩個領域。提交時值不存在錯誤。單擊提交按鈕時不會發生任何提交。它什麼都不做。jQuery驗證插件與AJAX提交處理程序不工作

HTML:

<form id="account-info-form" action="/process/p_profile_info.php" method="post"> 
    <div class="row margin-bottom-20"> 
     <div class="col-md-6 form-group"> 
      <label>First Name</label> 
      <div class="input-group"> 
       <span class="input-group-addon"> 
        <i class="fa fa-user fa-fw"></i> 
       </span> 
       <input class="form-control" type="text" name="fname"/> 
      </div> 
     </div> 
     <div class="col-md-6 form-group"> 
      <label>Last Name</label> 
      <div class="input-group"> 
       <span class="input-group-addon"> 
        <i class="fa fa-user fa-fw"></i> 
       </span> 
       <input class="form-control" type="text" name="lname"/> 
      </div> 
     </div> 
    </div> 
    <div class="row margin-bottom-30"> 
     <div class="col-md-12"> 
      <button class="btn btn-primary" type="submit" name="account-info" value="save"><i class="fa fa-check-circle"></i> Save Changes</button> 
      <button class="btn btn-default" type="reset">Cancel</button> 
     </div> 
    </div> 
</form> 

JS:

$('#account-info-form').validate({   
    // ajax submit 
    submitHandler: function (form) { 
    var $form = $(this); 
     $.ajax({ 
      type: $form.attr('method'), 
      url: $form.attr('action'), 
      data: $form.serialize(), 
      dataType : 'json' 
     }) 
     .done(function (response) { 
      if (response.success == 'success') 
      {    
     alert('success');      
      } 
      else 
      { 
       alert('fail'); 
      } 
     }); 
    return false; // required to block normal submit since you used ajax 
    } 
}); 

回答

11

沒有理由這樣做,(和$(this)是不是你期望它是).. 。

var $form = $(this); 

只需使用傳入該函數的form參數即可。

submitHandler: function (form) { 
    $.ajax({ 
     type: $(form).attr('method'), 
     url: $(form).attr('action'), 
     data: $(form).serialize(), 
     dataType : 'json' 
    }) 
    .done(function (response) { 
     if (response.success == 'success') {    
      alert('success');      
     } else { 
      alert('fail'); 
     } 
    }); 
    return false; // required to block normal submit since you used ajax 
} 
+1

doh ...我發誓我最初,但我一定是使用$窗體或東西。再次感謝! – user756659

相關問題