Laravel 5.2 AJAX验证警报消息不会显示在laravel视图中

时间:2018-04-04 09:16:04

标签: javascript json ajax laravel laravel-5.2

我正在尝试使用ajax来显示错误。例如,如果表单输入为空。它起作用但它不符合它的观点。每次我用空表格执行程序时都会显示这个。

enter image description here

我希望它会像这样显示警告

enter image description here

这是我的控制器

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。我把它放在<form>

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

3 个答案:

答案 0 :(得分:0)

响应在json中,所以你必须做JSON.parse(数据)

答案 1 :(得分:0)

我认为你不会在成功方法中得到错误。尝试使用错误功能。

$.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);
   }
});

答案 2 :(得分:0)

更改您的控制器

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提供连接控制器和视图的路径。 希望这可以帮助您解决问题