关于laravel通过ajax进行表单验证未通过,返回422怎么处理?

通过ajax,post方式发送了验证数据,Requests验证没有通过,官方文档说如果是ajax请求会返回json格式的错误提示信息,并且携带422,请问这个422怎么处理?

我来试试看呗 。首先,建议使用下面这个ajax:

 $.ajax({
      type: 'post',
      url: url,
      data: data,
      dataType: 'json',
      success: function(data){
        // 成功时处理
      }),
      error: function(data){
        var errors = data.responseJSON;
        console.log(errors);
        //这里理论上可以捕捉错误
      }
    });

你看满足你的要求不?

openwrtmail

建议提问题能够提供更多的信息。譬如
1、错误提示截图。
2、关键地方你自己的代码。
问题比较笼统 大家也不好帮你。 @cnsnms

cnsnms

验证规则:

控制器中的方法:(没有通过验证)

ajax返回的错误提示:

ajax的json数据:

ajax发送的数据:

cnsnms

@openwrtmail

openwrtmail

表单中更换一个brand_name试试 @cnsnms

cnsnms

@openwrtmail 如果通过验证的话,一切都是正常的,也能收到返回的json数据。我想做一个操作错误提示,验证错误框架返回时携带的422,我没找到解决的方法。

JellyBool

难道这个错误消息不可以在ajax的callback处理么?

cnsnms

@JellyBool 返回结果的时,携带了一个422,callback获取不到返回的数据,就是这个问题,有点不知何处下手!jelly有什么高招没?

JellyBool

你用的是Jquery的ajax?

cnsnms

@JellyBool 恩,使用的时$.post()这个方法

JellyBool

我来试试看呗 。首先,建议使用下面这个ajax:

 $.ajax({
      type: 'post',
      url: url,
      data: data,
      dataType: 'json',
      success: function(data){
        // 成功时处理
      }),
      error: function(data){
        var errors = data.responseJSON;
        console.log(errors);
        //这里理论上可以捕捉错误
      }
    });

你看满足你的要求不?

cnsnms

@JellyBool 等待你的消息!!!看来这个问题还有点价值,哈哈哈哈

JellyBool

你看看,上面的回复有没有满足你的要求?

cnsnms

@JellyBool .ajax这个方式发送ajax可以接收到错误返回的信息,不过为什么.post这个方法不能用呢,我去看了下JQ的源码:

post: function( url, data, callback, type ) {
    if ( jQuery.isFunction( data ) ) {
        callback = data;
        data = {};
    }
 
    return jQuery.ajax({
        type: "POST",
        url: url,
        data: data,
        success: callback,
        dataType: type
    });
},

没有指定错误接收操作,也许大概就是因为这个问题了吧!!jelly你怎么看

cnsnms

虽然.post和.get底层都是$.ajax实现,可能就是因为jq吧get和post这两个方法做了简化,所有才会有这个问题的吧!

JellyBool

对啊,这两个都是简化版的啊,所以我上面才问你用的哪个ajax。。。

cnsnms

@JellyBool 唉,还纠结这么久。完美~~~~~~~

JellyBool

所以以后问问题的话,尽量详细吧。要是一开始我知道你用的什么ajax,第一个评论就可以解决了。没必要浪费多余的时间

cnsnms

@JellyBool ok,以后注意

PHPclown 回复 cnsnms

你的直接用的ajax返回的就是422吗

PHPclown

没有通过验证,报404什么问题呢,如果通过验证的话就一切正常,不通过验证就是404,不是422