Laravel 使用 Ajax 提交表单,validate 验证怎么展示?请大家指点下思路!

laravel 使用 ajax 提交表单,未通过 validate 验证,后台返回了 errors 信息
因为使用 ajax 页面没有刷新,怎么把 validate 验证信息,显示出来呢。。
请大家指点一下思路!感谢!

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案
<script type="text/javascript">
    // Ajax 提交+验证
    $("#form_loan").change(function(){
        $.ajax({
            type: 'POST',
            dataType: 'json',
            url: "{{ route('decision.form_loan', $company->id) }}" ,
            data: $('#form_loan').serialize(),
            success: function() {
                $('<div>').appendTo('body').addClass('form_alert alert-success').html('保存成功').show().delay(1000).fadeOut();
            },
            error: function(res) {
                errors = res.responseJSON.errors;
                var form_errors = '';
                $.each(errors, function(i) {
                    form_errors += '<div>' + errors[i] + '</div>';
                });
                $('<div>').appendTo('body').addClass('form_alert alert-danger').html(form_errors).show().delay(2000).fadeOut();
            },
        });
    });
</script>

有效的代码如上,确实需要前端用 js 处理下 validate 返回的结果,然后弹层显示。

5年前 评论
mamahaha 5年前
讨论数量: 8

直接一个弹框显示错误信息完事

5年前 评论
HEPING (楼主) 5年前

可以设置下选项,全局处理异常
参考:https://github.com/eddy8/lightCMS/blob/mas...

5年前 评论
HEPING (楼主) 5年前
eddy8 (作者) 5年前
HEPING (楼主) 5年前
$validator = Validator::make($request->all(), [
    'name' => 'required',
],[
    'name.required' => '不为空',
]);

if ($validator->fails()) {
    return \Response::json([
        'status' => 'error',
        'code' => 400,
        'message' => $validator->errors()->first()
    ]);
}
5年前 评论
HEPING (楼主) 5年前
Epona

前端展示的话需要在前端处理,比如 用jquery 或者 vue 等来处理页面dom,然后将信息展示出来。

5年前 评论
HEPING (楼主) 5年前

简单粗暴就是只获取第一条,用 弹框,toast等提示,,,

比如:

Laravel

友好一点就是把每个字段的错误显示在每个输入框下面,,,这就要前端做点处理,,个人认为用 vue、react 相关的 UI 库会比 jquery 的好处理一些,,

比如:

Laravel

5年前 评论
HEPING (楼主) 5年前
HEPING (楼主) 5年前
<script type="text/javascript">
    // Ajax 提交+验证
    $("#form_loan").change(function(){
        $.ajax({
            type: 'POST',
            dataType: 'json',
            url: "{{ route('decision.form_loan', $company->id) }}" ,
            data: $('#form_loan').serialize(),
            success: function() {
                $('<div>').appendTo('body').addClass('form_alert alert-success').html('保存成功').show().delay(1000).fadeOut();
            },
            error: function(res) {
                errors = res.responseJSON.errors;
                var form_errors = '';
                $.each(errors, function(i) {
                    form_errors += '<div>' + errors[i] + '</div>';
                });
                $('<div>').appendTo('body').addClass('form_alert alert-danger').html(form_errors).show().delay(2000).fadeOut();
            },
        });
    });
</script>

有效的代码如上,确实需要前端用 js 处理下 validate 返回的结果,然后弹层显示。

5年前 评论
mamahaha 5年前
颠倒的玉石

我用的layer弹窗

5年前 评论

我想问一下,我laravel-admin已经在表单中设置了验证,但是在测试中,不满足验证条件的话在提交后就如图 2 所示,这是不是 ajax 返回的信息,我不知道如何通过弹窗提示出来,这应当如何解决
file
file

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!