在 Laravel 中的表单验证如果验证失败,会根据请求方式自动返回对应格式的错误信息,如果在传统 HTTP 请求期间验证失败,则会生成对先前 URL 的重定向响应。如果传入的请求是 XHR,将将返回包含验证错误信息的 JSON 响应。
如果是传统的 HTTP 请求,那么可以在 blade 模板中直接调用共享的 $errors 变量来回显错误信息,但是如果是 ajax 方式提交的表单,实际上整体页面并未全部刷新,导致 blade 模板中无法获取到 $errors 变量,接下来我们就介绍一下 Laravel 采用 ajax 提交表单时,怎么回显表单验证的错误信息。
$.ajax({
//ajax请求代码
})
.done(function( data ) {
//请求成功回调
})
.fail(function(xhr) {
//请求错误回调,循环输出错误信息,html中提前定义 id 为 alert 的元素即可。
$.each(xhr.responseJSON.errors,function(field_name,error){
$("#alert").append("<li>"+error+"</li>")
})
});
当然,也可以使用 ajax 操作的 error 回调。