1
我实现使用Laravel 5.4认证过程基于AJAX的登录。Laravel验证响应通过AJAX
我不断收到422
反应,所以经过一番研究,我想出了这个验证方法我LoginController
(其覆盖AuthenticatesUsers
特点方法:
protected function validateLogin(Request $request)
{
$validator = Validator::make($request->all(), [
$this->username() => 'required|email|max:50|unique:users',
'nickname' => 'required|max:30|min:6|unique:users',
'password' => 'required|confirmed|min:6',
]);
if ($validator->fails()) {
$responseBag = $validator->getMessageBag()->toArray();
$responseBag['type'] = ['error'];
if($request->ajax()) {
return response()->json($responseBag, 422);
}
$this->throwValidationException(
$request, $validator
);
}
}
我期待这样的响应:
array:3 [
"nickname" => array:1 [
0 => "The nickname field is required."
]
"password" => array:1 [
0 => "The password confirmation does not match."
]
"type" => array:1 [
0 => "error"
]
]
但我得到这个回应
{email: "These credentials do not match our records."}
如果我dd($messageBag)
回应前,然后我得到预期的结果。我错过了什么?
您好,感谢您的答复。如果我在'if'语句之前使用'dd($ request-> ajax())',它将返回true。如果我放在'if'语句中的'dd',它会触发,所以越来越到'返回JSON'声明。另外,我正在使用'jQuery'(V3,最新版本)''后缀''.ajax'函数。这已经在prev中起作用了。 Laravel版本确定。 – TheRealPapa
@TheRealPapa谢谢。请参阅最新的答案。 –