验证后避免 Laravel 重定向

我正在 Laravel 控制器上进行简单的验证:


public function updateInfo(Request $request) {


        $validator = $request->validate([

            "name" => ["string", "nullable"],

            "email" => ["email", "nullable"],

            "currentPassword" => ["password:api"]

        ]);


        return json_encode($validator);

}

我的问题是,如果失败,此验证会将我重定向到主页,并且我正在通过 AJAX 发出请求,我知道 Laravel 会检测到何时通过 Ajax 发出请求,但它仅在正常请求时才有效(典型请求在我发送了标头,Content Type application/json并在正文中发送了一个普通的 JSON


但是 Laravel 无法检测 Ajax 请求何时不是Content Type application/json,我使用的FormData()是 JavaScript 对象,所以,我不发送 header Content Type application/json,并在正文中发送 FormData 对象。


我认为它模拟了重新加载页面的典型 HTTP 请求,因此 Laravel 无法检测到它,但它给我的 ajax 响应带来了麻烦,因为 Laravel 响应了重定向,并且在我的 Ajax 响应中我捕获了 HTML 代码主页的。


我能做些什么?


达令说
浏览 104回答 1
1回答

素胚勾勒不出你

您可以将validator()辅助函数与validate()方法一起使用,它将帮助您进行 AJAX 调用和普通调用validator($request->all(), [    "name" => ["string", "nullable"],    "email" => ["email", "nullable"],    "currentPassword" => ["password:api"]])->validate();
打开App,查看更多内容
随时随地看视频慕课网APP