【问题标题】:laravel validation during ajax requestajax请求期间的laravel验证
【发布时间】:2016-09-20 14:33:49
【问题描述】:

请有人从 Laravel 文档中解释此信息“在 AJAX 请求期间使用 validate 方法时,Laravel 不会生成重定向响应。相反,Laravel 会生成包含所有验证错误的 JSON 响应。此 JSON 响应将被发送带有 422 HTTP 状态码。”

“在 AJAX 请求期间”究竟是什么意思?

如果我是这样设置的:

  1. 用户从视图中的表单提交输入。
  2. 路由调用控制器中的post方法
  3. 请求在控制器中得到验证

案例 1) 请求通过验证,输入存储在数据库中 -> 响应以 JSON 形式返回,用于动态更新视图的脚本。

case 2) 请求没有通过验证,这里返回什么?我认为是重定向,如果不是,您如何检查验证是否未能返回 JSON?

这种情况是否与文档中所说的相似?如果不是,那是什么?

【问题讨论】:

    标签: ajax validation laravel request response


    【解决方案1】:

    在处理验证失败时,laravel 会自动生成错误响应。通常这会将用户重定向回他们的表单,但在 AJAX 请求的情况下,它将返回一个 JSON 响应,其中包含验证失败的详细信息。

    Laravel 依赖 symfony 请求对象来检测 AJAX 请求,特别是 this linereturn 'XMLHttpRequest' == $this->headers->get('X-Requested-With');

    如果您遇到请求未被视为 AJAX 的问题,请确保您的客户端正确设置了 X-Requested-With 标头

    【讨论】:

      【解决方案2】:

      在这种情况下,对 AJAX 调用的响应是 JSON 字符串 案例一:如你所说 情况 2:带有错误消息的 JSON 字符串。在“网络”选项卡中查看您的 Chrome 开发工具,您会看到确切的响应。

      【讨论】:

      • 我知道,我想了解的是验证器如何参与发送 JSON 响应。我的意思是,如果我在验证后制作我的 JSON,我发送的是我制作的 JSON,而不是验证器的实例。那么我应该发送 $validator 吗?
      • 如果 Laravel 验证规则因数据丢失或错误而被触发,验证器会自行触发响应。您的任何代码都不会被执行。
      • 好的,但是如果你使用 validate 而不是 validator 呢?如何触发响应?
      • $this->validate($request, [ 'post_id' => 'required', 'body' => 'required' ]); 我的意思是这个而不是$rules = array( 'post_id' => 'required', 'body' => 'required' ); $validator = Validator::make(Input::all(), $rules); if ($validator->fails()) { return Response()->json($validator); } else { something }
      猜你喜欢
      • 2020-08-20
      • 2018-01-24
      • 2016-09-20
      • 1970-01-01
      • 2018-01-17
      • 1970-01-01
      • 2017-11-21
      • 2020-01-13
      • 2021-08-04
      相关资源
      最近更新 更多