2016-05-23 123 views
0

请有人从Laravel docs解释此信息“在AJAX请求期间使用validate方法时,Laravel不会生成重定向响应,而是生成包含所有验证错误的JSON响应。 JSON响应将以422 HTTP状态码发送。“ajax请求中的laravel验证

“在AJAX请求期间”究竟意味着什么?

如果我这样设置:

  1. 用户从视图中的表单提交输入。
  2. 的呼叫路由在控制器
  3. 该请求在控制器

情况1)请求通过验证和输入被验证存储在DB中柱的方法 - >响应被返回作为JSON用于即时更新视图的脚本。

情况2)请求没有通过验证,这里返回什么?我认为重定向,如果不是,你如何检查验证是否无法返回JSON?

这种情况与文档中提到的相似吗?如果不是那么什么?

回答

0

在这种情况下对AJAX调用的响应是JSON字符串 情况1:如您所说 情况2:带有错误消息的JSON字符串。查看你的Chrome开发工具到网络标签,你会看到确切的回应。

+0

我知道这一点,我想了解的是验证器如何参与发送JSON响应。我的意思是,如果我在验证后制作我的JSON,我发送的是设置的,我制作的JSON,而不是验证器的实例。那么我应该发送$ validator吗? – Chriz74

+0

如果Laravel验证规则触发了丢失或错误数据的原因,验证程序会自行触发响应。你的代码都不会被执行。 – Pascal

+0

好吧,但如果你使用验证而不是验证器呢?你如何触发回应? – Chriz74

0

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

Laravel依靠symfony的请求对象,以检测AJAX请求,具体this linereturn 'XMLHttpRequest' == $this->headers->get('X-Requested-With');

如果你与你的请求不被视为AJAX遇到问题,请确保您的客户端适当设置X-Requested-With