ajax - 如何在 Laravel 中使用 Ajax 单击时验证模态表单
问题描述
我有一个用于登录 Laravel 项目的模式表单。当我输入虚假数据并单击“登录”按钮时,页面刷新和模式正在关闭。只有当我再次打开模式时,我才能看到错误。这不是用户友好的。我想使用 Ajax 验证模式,如果出现问题而不刷新页面,则显示错误
这是我的模态
<form action="/login" method="post">
@csrf
<div class="sign-in-wrapper">
<a href="#0" class="social_bt facebook">Login with Facebook</a>
<a href="#0" class="social_bt google">Login with Google</a>
<div class="divider"><span>Or</span></div>
<div class="form-group">
<label>Email</label>
<input type="email" name="email" class="form-control" name="email" id="email">
<i class="icon_mail_alt"></i>
@error('email')
<strong style="color: red">{{$message}}</strong>
@enderror
</div>
<div class="form-group">
<label>Password</label>
<input type="password" name="password" class="form-control" name="password" id="password" value="">
<i class="icon_lock_alt"></i>
@error('password')
<strong style="color: red">{{$message}}</strong>
@enderror
</div>
<div class="clearfix add_bottom_15">
<div class="checkboxes float-left">
<input id="remember-me" type="checkbox" name="check">
<label for="remember-me">Remember Me</label>
</div>
<div class="float-right"><a id="forgot" href="javascript:void(0);">Forgot Password?</a></div>
</div>
<div class="text-center">
<button type="submit" class="btn_login">Log In</button>
</div>
<div class="text-center">
Don’t have an account? <a href="{{ url('/register') }}">Sign up</a>
</div>
<div id="forgot_pw">
<div class="form-group">
<label>Please confirm login email below</label>
<input type="email" class="form-control" name="email_forgot" id="email_forgot">
<i class="icon_mail_alt"></i>
</div>
<p>You will receive an email containing a link allowing you to reset your password to a new preferred
one.</p>
<div class="text-center"><input type="submit" value="Reset Password" class="btn_1"></div>
</div>
</div>
</form>
解决方案
试试这个
You need to some custom changes yourself in code.
$('#frmLogin').on('submit', function (event) {
event.preventDefault();
var formData = $(this).serialize();
$.ajax({
type: 'POST',
url: '/login',
data: formData,
success: function (res) {
console.log(res); // get resposnse from controller in json
if (res.emailError) {
$('.error-email').show().text(res.errorMsg);
} else {
$('.error-email').hide();
}
if (res.passwordError) {
$('.error-password').text(res.errorMsg);
} else {
$('.error-password').hide();
}
},
error: function (data) {
alert(data);
}
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<form id="frmLogin" method="POST">
@csrf
<div class="sign-in-wrapper">
<a href="#0" class="social_bt facebook">Login with Facebook</a>
<a href="#0" class="social_bt google">Login with Google</a>
<div class="divider"><span>Or</span></div>
<div class="form-group">
<label>Email</label>
<input type="email" name="email" class="form-control" name="email" id="email">
<i class="icon_mail_alt"></i>
<strong style="color: red;display: none;" class="error-email">{{$message}}</strong>
</div>
<div class="form-group">
<label>Password</label>
<input type="password" name="password" class="form-control" name="password" id="password" value="">
<i class="icon_lock_alt"></i>
<strong style="color: red;display: none;" class="error-password">{{$message}}</strong>
</div>
<div class="clearfix add_bottom_15">
<div class="checkboxes float-left">
<input id="remember-me" type="checkbox" name="check">
<label for="remember-me">Remember Me</label>
</div>
<div class="float-right"><a id="forgot" href="javascript:void(0);">Forgot Password?</a></div>
</div>
<div class="text-center">
<button type="submit" class="btn_login">Log In</button>
</div>
<div class="text-center">
Don’t have an account? <a href="{{ url('/register') }}">Sign up</a>
</div>
</div>
</form>
推荐阅读
- java - 有没有办法在运行时向tomcat添加端口?
- python - 如何在 Django 中以最安全的方式存储表单中的数据?
- jsf - Primefaces DataTable var 用于生成 Columns 不显示任何行
- node.js - 如何编写一个依赖于 tensorflowjs 的库,该库将从 tfjs 或 tfjs-node 适当地导入
- c# - 如何使 FlowDocumentPageViewer 可编辑?
- docker - “docker logs container-id | tail -10”是一个有效的命令吗?
- php - 在类的构造函数中初始化树枝
- java - 以递归方式将列表的元素与以下元素进行比较
- c# - 通过 C# 程序从 SQL Server 数据库中删除记录的问题
- javascript - 如何在 React 中的鼠标位置呈现自毁段落?