【问题标题】:Laravel 5.2 AJAX validation alert message won't show to laravel viewLaravel 5.2 AJAX 验证警报消息不会显示到 laravel 视图
【发布时间】:2018-09-13 18:55:03
【问题描述】:

我正在尝试使用 ajax 来显示错误。例如,如果表单输入为空。它起作用了,但它并没有达到它的观点。每次我以空形式执行程序时,它都会显示这一点。

我希望它会显示这样的警报

这是我的控制器

public function storeamp(Request $request){

        $validator = Validator::make($request->all(), [
        'guru_id' => 'required',
        'mapel_id' => 'required',
    ]);

    if ($validator->passes()) {

        $ada = Mengampu::where('guru_id', $request['guru_id'])->where('mapel_id', $request['mapel_id'])->get()->count();

        if($ada > 0){
            Session::flash('tolong', 'Data Exist!');
            return redirect()->to('guru/ampu');
        } else{ 
            return response()->json(['success'=>'Added new records.']);
        }
    }

    return response()->json(['error'=>$validator->errors()->all()]);
    }

这是我的 ajax 脚本

<script type="text/javascript">
    $(document).ready(function() {
        $(".btn-submit").click(function(e){
            e.preventDefault();

            var _token = $("input[name='_token']").val();
            var guru_id = $("input[name='guru_id']").val();
            var mapel_id = $("input[name='mapel_id']").val();

            $.ajax({
                url: url,
                type:'POST',
                data: {_token:_token, guru_id:guru_id, mapel_id:mapel_id},
                success: function(data){
                    if ($.isEmptyObject(data.error)){
                         $('div.flash-message').html(data);

                    } else {
                        printMessageErrors(data.error)
                    }          
                },
            });
                function printMessageErrors(msg){
                $(".print-error-msg").find('ul').html('');
                $(".print-error-msg").css('display','block');

                $.each( msg, function( key, value ) {
                    $(".print-error-msg").find("ul").append('<li>'+value+'</li>');
                });
            }
        });
    });


</script>

这是我放置print-error-msg 的div。我放在上面&lt;form&gt;

<div class="alert alert-danger print-error-msg" style="display:none">
            <ul></ul>
        </div>

【问题讨论】:

  • 你想在你的视图中显示错误,是吗?
  • console.log 在 each() 函数中的值。确保你在那里得到错误值
  • 我的意思是如果验证表单为空@JamesRiady 我希望在我的视图中显示它并带有警报 div。让我更新问题
  • 你不能使用返回响应..因为返回响应将返回 json..你必须返回带有错误变量的视图,然后在你的视图中..你可以检查错误,如 if the error is not empty then foreach the error and show the alert ,你明白了吗?
  • 我应该如何更改代码? @JamesRiady

标签: javascript json ajax laravel laravel-5.2


【解决方案1】:

响应是 json 格式,所以你必须做 JSON.parse(data)

【讨论】:

    【解决方案2】:

    我认为您不会在成功方法中遇到错误。也尝试使用错误函数。

    $.ajax({
       url: url,
       type:'POST',
       data: {_token:_token, guru_id:guru_id, mapel_id:mapel_id},
    
       success: function(data){
            $('div.flash-message').html(data);
       },
       error: function(data) {
            printMessageErrors(data.error);
       }
    });
    

    【讨论】:

    • 感谢您的建议。我已经更新了,但还是有同样的问题
    【解决方案3】:

    更换你的控制器

    public function storeamp(Request $request){
    
        $validator = Validator::make($request->all(), [
        'guru_id' => 'required',
        'mapel_id' => 'required',
    ]);
    
    if ($validator->passes()) {
    
        $ada = Mengampu::where('guru_id', $request['guru_id'])->where('mapel_id', $request['mapel_id'])->get()->count();
    
        if($ada > 0){
            Session::flash('tolong', 'Data Exist!');
            return redirect()->to('guru/ampu');
        } else{ 
            return response()->json(['success'=>'Added new records.']);
        }
    }
    
    $errors = $validator->errors()->all();
    return view(hello.world)->with('errors', $errors);
    }
    

    查看

    <div class="alert alert-danger print-error-msg" style="display: {{ count($errors) > 0 ? 'block' : 'none' }}">
            <ul>
            @foreach($errors as $error)
              <li>{{$error['error']}}</li> 
            @endforeach
            </ul>
        </div>
    

    我认为如果你的项目只专注于使用 laravel,你不需要使用 ajax 来存储你的数据。laravel 提供了连接你的控制器和视图的路由。 希望这可以帮助您解决问题

    【讨论】:

    • 哦,谢谢!这解决了我的问题! :D 希望你有一个美好的一天!
    • 如果它解决了你的问题,请在我的回答中打勾。因为如果他们遇到同样的问题,它可以帮助其他人:)
    猜你喜欢
    • 1970-01-01
    • 2019-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-09
    • 1970-01-01
    • 1970-01-01
    • 2016-09-29
    相关资源
    最近更新 更多