我在过去几天里使用了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
}
});
答案 0 :(得分: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
}