ajax请求验证器验证失败后,会返回一个422状态的错误,我用ajax是没有捕捉到。
然后从百度找啦一个方法吧错误信息获取到,自己生成一个json返回给浏览器。
/**
* @param $data 验证的数据
* @param $rules 验证的规则
* @param $messages 自定义的错误信息
* @return mixed 验证失败返回对应的错误信息,验证成功无返回值。
*/
protected function AjaxValidator($data,$rules, $messages){
$validator = \Validator::make($data, $rules, $messages);
if ($validator->fails()) {
//将返回错误循环组装成字符串
$arr = [];
foreach ($validator->getMessageBag()->toArray() as $k=>$error){
array_push($arr, $error[0]);
}
$str = implode(' ', $arr);
return \Response::json([
'success' => false,
'errors' => $str
]);
}
}
$rules =[
'username' => 'required|max:24',
'password' => 'required|min:6',
'captcha' => 'required|captcha'
];
$messages = [
'username.required' => '用户名必填',
'username.max' => '用户名长度必须小于24',
'password.required' => '密码必填',
'password.min' => '密码长度必须大于6',
'captcha.captcha' => '验证码不正确',
];
$validator = $this->AjaxValidator($request->all(),$rules ,$messages);最终错误的信息返回:

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号