我有一個通用的AJAX表單提交JS類:Laravel 5.4 - 忘記密碼AJAX驗證
$(function() {
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$('.ajax-form').submit(function() {
var form = $(this);
var url = form.attr('action');
var data = form.serialize();
if (!form.hasClass('valid')) {
$.ajax({
url: url,
type: 'post',
data: data,
dataType: 'json',
success: function(result) {
$('.field').removeClass('has-error');
form.addClass('valid');
form.submit();
},
error: function(result) {
var errors = result.responseJSON;
$('.field').removeClass('has-error');
$.each(errors, function(key, value) {
var field = $('.field.' + key);
field.addClass('has-error').children('.error-message').text(value[0]);
});
}
});
return false;
}
});
});
這個偉大的工程在我的所有形式的AJAX驗證。我現在試圖在使用auth scaffold(resources/views/auth/passwords/email.blade.php
)生成的默認「忘記密碼」表單上實現此功能。
<form class="ajax-form" method="POST" action="{{ route('password.email') }}">
...
</form>
儘管AJAX驗證在這裏工作,但我遇到的問題是驗證通過時,它也執行「忘記密碼」功能。所以基本上它會發送重置密碼郵件兩次(在AJAX提交期間和在正常表單提交期間一次)。
我只想要AJAX提交來執行驗證。如果驗證成功,它應該(像目前一樣)執行一個將發送電子郵件的正常表單提交。
顯示您的控制器 –
您可以使用'preventDefault()'函數來防止此行爲。 –
@PankitGami - 默認生成的控制器:https://github.com/laravel/laravel/blob/master/app/Http/Controllers/Auth/ForgotPasswordController.php – GSTAR