您的位置:首页 > 编程语言 > PHP开发

laravel 学习日记之 表单提交/AJAX提交与验证器validate之间的纠葛

2020-07-31 10:47 901 查看

首先,使用表单提交+Validate 验证 和 使用ajxa提交 +validate验证
后端不变,变化的只有html这边。

统一的后端代码

$rules = [
'username' => 'required|max:64',
'password' => 'required|max:500',
];
//定义提示信息
$messages = [
'username.required' => '账号不能为空',
'password.required' => '密码不能为空',
];
$this->validate($request, $rules,$messages);
return 'success';

表单提交验证 html: 只需要注入下面一串代码,第一个div也可以不写 ,laravel会自动检测$errors信息,并将他显示在这串代码的位置

@if (count($errors))
{{time()}}
<div class="alert alert-danger">
<ul>
<li>{{ $errors->first()}}</li>
</ul>
</div>
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{$error }}</li>
@endforeach
</ul>
</div>
@endif

ajax提交 +validate : ajax这边需要自己处理后端返回的数据,所以要自己写js

$('#submit').click(function () {
$.ajax({
url: "{{route('login')}}",
type: "POST",
headers: {
'X-CSRF-TOKEN': $('meta[name="_token"]').attr('content')
},
data: $('#myform').serialize(),
// dataType: "json",
success: function (data) {

},
error: function(data) {
if (data.status === 422) {
var errors = $.parseJSON(data.responseText);    //转json格式,或直接使用 data.responseJSON
$.each(errors, function (key, value) {
$('#response').addClass("alert alert-danger");
if ($.isPlainObject(value)) {
$.each(value, function (key, value) { //这里是对每个错误进行遍历,下面选择是否弹出或者展示页面上
alert(value);
// $('#response').show().append(value + "<br/>");
});
} else {
// $('#response').show().append(value + "<br/>"); //this is my div with messages
}
});
}
},
});
});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: