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

时间:2015-06-02 19:57:01

标签: ajax json laravel-5

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

  

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

但我更喜欢局部视图闪烁错误,这是非AJAX的默认设置。 那么是否可以模拟非AJAX或关闭AJAX 而无需重建源代码或其他一些尴尬?

BTW,罪魁祸首函数是buildFailedValidationResponse。

2 个答案:

答案 0 :(得分:2)

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

在Laravel 5.1.20下,我不得不将类Illuminate \ Foundation \ Http \ FormRequest中的方法响应复制到类App \ Http \ Requests \ Request中,就像你的答案一样,改变了

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

        if ($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);
}

答案 1 :(得分:0)

管理用蛮力解决问题。刚刚覆盖了AuthController中的trait方法。感觉不好。

if (strp.matches(strp) && stru.matches(stru)) {
    register rg=new register();
    rg.setVisible(true);
    this.setVisible(false);
}
else {
    JOptionPane.showMessageDialog(null,"User name or password are not correct.");
    return;
}