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

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

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 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 返回的结果,然后弹层显示。

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年前 评论

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