2013-12-15 3 views
3

Я использовал плагин проверки jquery совсем немного за последние несколько дней, но еще не использовал его с помощью ajax submit. То, что у меня есть, ниже, сокращено до двух полей. Нет ошибок для значений при отправке. При нажатии кнопки «Отправить» ничего не происходит. Он просто ничего не делает.плагин проверки jquery с ajax submit обработчик не работает

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 ... Клянусь, у меня было это изначально, но я, должно быть, использовал $ form или что-то еще. Еще раз спасибо! – user756659

Смежные вопросы