php - 验证后避免 Laravel 重定向

标签 php ajax laravel validation form-data

我正在我的 Laravel Controller 上做一个简单的验证:

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 发送 header ,在正文中我发送了一个普通的 JSON
但是 Laravel 无法检测何时 te Ajax 请求不是 Content Type application/json ,我正在使用 FormData() JavaScript 的对象,所以,我不发送标题 Content Type application/json ,并在正文中发送了 FormData 对象。
我认为它模拟了重新加载页面的典型 HTTP 请求,因此 Laravel 无法检测到它,但它给我的 ajax 响应带来了麻烦,因为 Laravel 响应重定向,而在我的 Ajax 响应中,我正在捕获 HTML 代码的主页。
我能做什么?

最佳答案

您可以使用 validator()辅助函数 validate()方法它将帮助您进行 AJAX 调用和正常调用

validator($request->all(), [
    "name" => ["string", "nullable"],
    "email" => ["email", "nullable"],
    "currentPassword" => ["password:api"]
])->validate();

关于php - 验证后避免 Laravel 重定向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62881504/

相关文章:

php - 如何查看用户之前是否发过帖子,如果有,突出显示他过去的帖子?

c# - 将变量或数组从 javascript 发送到 asp.net(使用 ajax)

mysql - 错误号 : 150 "Foreign key constraint is incorrectly formed" when trying to create a foreing key

php - 只为 Laravel 5 中的一个环境启用全局中间件

php - 在 PHP MYSQL 中添加/注册用户时自动添加/注册

PHP 使用trim() 对某些字符串解密失败

javascript - IE8 NTLM Ajax 编号 "Content-Length: 0"后 cometD Fiddler

php - Laravel Blade : syntax error, 意外 'endif' (T_ENDIF)

php - "Notice: Undefined variable"、 "Notice: Undefined index"、 "Warning: Undefined array key"和 "Notice: Undefined offset"使用 PHP

php - echo Javascript 出现在警报中而不是处理中