Laravel AJAX验证:返回HTML而不是JSON

Laravel AJAX验证:返回HTML而不是JSON,ajax,json,laravel-5,Ajax,Json,Laravel 5,正如文档中所述,如果AJAX验证失败,您将得到json响应: 如果验证失败,将生成重定向响应以将用户发送回其以前的位置。错误也将被闪现到会话中,以便显示。如果请求是AJAX请求,则将向用户返回一个带有422状态码的HTTP响应,其中包括验证错误的JSON表示 但我更喜欢带有闪现错误的局部视图,这是非AJAX的默认设置。 那么是否可以模拟非AJAX或关闭AJAX而不重建源代码或其他尴尬的事情呢 顺便说一句,罪魁祸首函数是buildFailedValidationResponse。用暴力解决了这个问

正如文档中所述,如果AJAX验证失败,您将得到json响应:

如果验证失败,将生成重定向响应以将用户发送回其以前的位置。错误也将被闪现到会话中,以便显示。如果请求是AJAX请求,则将向用户返回一个带有422状态码的HTTP响应,其中包括验证错误的JSON表示

但我更喜欢带有闪现错误的局部视图,这是非AJAX的默认设置。 那么是否可以模拟非AJAX或关闭AJAX而不重建源代码或其他尴尬的事情呢


顺便说一句,罪魁祸首函数是buildFailedValidationResponse。

用暴力解决了这个问题。刚刚覆盖了AuthController中的trait方法。我感觉很糟糕

protected function buildFailedValidationResponse(Request $request, array $errors) 
{ 
    if (/*$request->ajax() ||*/ $request->wantsJson()) { return new JsonResponse($errors, 422); 
}

这些天我遇到了一个类似的问题,并最终覆盖了一个方法

在Laravel5.1.20下,我必须将方法响应从类Lightlight\Foundation\Http\FormRequest复制到类App\Http\Requests\Request中,就像您的答案一样,更改了

        if ($this->ajax() || $this->wantsJson()) {

这是App\Http\Requests\Request类中的完整方法

public function response(array $errors)
{
    if (!$this->pjax() && ($this->ajax() || $this->wantsJson())) {
        return new JsonResponse($errors, 422);
    }

    return $this->redirector->to($this->getRedirectUrl())
                            ->withInput($this->except($this->dontFlash))
                            ->withErrors($errors, $this->errorBag);
}
public function response(array $errors)
{
    if (!$this->pjax() && ($this->ajax() || $this->wantsJson())) {
        return new JsonResponse($errors, 422);
    }

    return $this->redirector->to($this->getRedirectUrl())
                            ->withInput($this->except($this->dontFlash))
                            ->withErrors($errors, $this->errorBag);
}