Плагин проверки 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 } }); 

Нет причин для этого, (и $(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 }