如何在带有请求文件的laravel中使用AJAX验证表单?

时间:2019-01-09 14:53:09

标签: javascript json laravel

这是我的请求代码

public function authorize()
{
    return true;
}

public function rules()
{
    return [
        'code'=>'required',
        'title'=>'required',
        'level'=>'required',
        'related'=>'required',
        'active'=>'required',
    ];
}

我想显示AJAX的错误。在stackoverflow中有很多解决此问题的方法,但是没有一个可以解决我的问题 因为它们描述了解决此问题的静态方法,所以我想使用请求文件来放置规则并在使用AJAX的视图中显示错误 请帮助我

 var errors = data.responseJSON;
        $.each(errors, function(key, value){
            $('#' + key)
                .closest('.form-group')
                .addClass('has-error')
                .append('<span class="help-block">' + value + '</span>');
        });

2 个答案:

答案 0 :(得分:0)

您是否尝试过更新Handler.php或设法响应?

我的建议是修改文件App\Exceptions\Handler.php。在方法render()上,您可以添加或替换为以下代码:

public function render($request, Exception $exception)
{  
    $parent = parent::render($request, $exception);

    if(!$request->is('api*'))
    {
        return $parent;
    }

    $messages = null;

    if(isset($parent->original) && isset($parent->original["errors"]))
    {
        $messages = $parent->original["errors"];
    }

    return response()->json(
        [
            'errors' => [
                'status' => 401,
                "messages" => $messages
            ]
        ], 401
    );
}

当您的路线在api下时,此代码将响应json。

答案 1 :(得分:0)

这是我的解决方案: 我将此代码添加到了我的Ajax中:

$.ajax({
    url:myUrl,
    type:method,
    data : form.serialize(),
    success:function(data)
    {
        // if success run these codes
    },
    error: function(xhr){
        var data = xhr.responseJSON;
        if($.isEmptyObject(data.errors) == false) {
            $.each(data.errors, function (key, value) {
                $('#' + key)
                    .closest('.form-group')
                    .addClass('has-error')
                    .append('<span class="help-block">' + value + '</span>');
            });
        }
    }
});