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

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

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
最佳答案
<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 返回的结果,然后弹层显示。

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

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

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

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

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

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

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

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

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

比如:

Laravel

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

比如:

Laravel

4年前 评论
HEPING (楼主) 4年前
HEPING (楼主) 4年前
<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 返回的结果,然后弹层显示。

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

我用的layer弹窗

4年前 评论

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

4年前 评论

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