【问题标题】:How to display success and error message in Laravel如何在 Laravel 中显示成功和错误消息
【发布时间】:2021-03-02 23:14:24
【问题描述】:

我想问。如何在 Laravel 中使用 Jquery 在刀片中为我的添加/删除输入字段动态显示成功和错误消息。一切似乎都很好,因为数据保存在数据库中,但没有出现成功消息的消息。它仅显示为 JSON。我的第二个问题,数据提交后如何刷新页面。

我的控制器:

public function addtrainee(Request $request) 
{
  $data = [];
  $count =  $request ->input('counting');
  $x = 1;

  while($x<=$count){
    $this->validate($request, [
    'name'.$x => 'required',
    'category'.$x => 'required',
  ]);
  $x++;
  }
  
  $validator = Validator::make($request->all(), $data);
  
  if ($validator->passes()) {

    $x=1;
    while($x<=$count){

    echo $request->input('name'.$x)."<br>";
    echo $request->input('category'.$x)."<br>";

    $trainees = new Trainee([
                'name' => $request->get('name'.$x),
                'category' => $request->get('category'.$x),
                ]);
                $trainees->save();

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

我的刀片:

<form name="add_name" id="add_name">  
  {{csrf_field()}} 
  <div class="alert alert-danger show-error-message" style="display:none">
    <ul></ul>
  </div>
  <div class="alert alert-success show-success-message" style="display:none">
    <ul></ul>
  </div>
  <input type="hidden" name="counting" class="form-control name_list" / id="counting" value="1">
  <div class="table-responsive">  
   <table class="table table-bordered" id="dynamic_field"> 
    <tr>  
       <td><input type="text" name="name1" placeholder="Enter Name" class="form-control name_list" / id="name"></td>  
       <td>
          <select  class="form-control category" id="category" name="category1">
             <option value="Male">Male</option>
             <option value="Female">Female</option>
          </select>
       </td>
       <td><button type="button" name="add" id="add" class="btn btn-success">Add More</button></td>  
    </tr>  
   </table>  
   <input type="button" name="submit" id="submit" class="btn btn-primary" value="Save" />  
  </div>
 </form>  

<script type="text/javascript">

$(document).ready(function(){      
    var url = "{{ url('addtrainee') }}";
    var i=$("#counting").val();  
    
    $('#add').click(function(){  
        var name = $("#name").val();
        var category = $("#category").val();
        i++;  
        var counting = $("#counting").val(i);
        
        $('#dynamic_field').append(
            '<tr id="row'+i+'" class="dynamic-added">'
            +'<td><input type="text" name="name'+i+'" placeholder="Enter name" class="form-control name_list" /></td>'
            +'<td><select class="form-control category" name="category'+i+'"><option value="Male">Male</option><option value="Female">Female</option></select></td>'
            +'<td><button type="button" name="remove" id="'+i+'" class="btn btn-danger btn_remove">X</button></td></tr>');  
        });  

    $(document).on('click', '.btn_remove', function(){ 
        i--; 
        var counting = $("#counting").val(i);
        var button_id = $(this).attr("id");   
        $('#row'+button_id+'').remove();  
    });  
    
    $.ajaxSetup({
        headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    }
    });
    
    $('#submit').click(function(){            
        
        $.ajax({  
            url:"{{ url('addtrainee') }}",  
            method:"POST",  
            data:$('#add_name').serialize(),
            type:'json',
            success:function(data)  
        {
    
            if(data.error)
            {
                display_error_messages(data.error);
            }else
            {
                i=1;
                $('.dynamic-added').remove();
                $('#add_name')[0].reset();
                $(".show-success-message").find("ul").html('');
                $(".show-success-message").css('display','block');
                $(".show-error-message").css('display','none');
                $(".show-success-message").find("ul").append('<li>Trainees Has Been Successfully Inserted.</li>');
            }
         }  
        });  
    });  
    
    function display_error_messages(msg) {
        $(".show-error-message").find("ul").html('');
        $(".show-error-message").css('display','block');
        $(".show-success-message").css('display','none');
        $.each( msg, function( key, value ) {
        $(".show-error-message").find("ul").append('<li>'+value+'</li>');
        });
        }
    });  
</script>

我尝试将 return response()-&gt;json(['success'=&gt;'true]); 更改为 return redirect('trainee')-&gt;with('success','Trainees Saved'); 并在我的刀片上添加会话错误,但似乎什么也没发生。

谁能帮帮我?

【问题讨论】:

  • data 里面有什么?
  • @Swati all input sir :)
  • 嗨,检查this 可能会有所帮助。更改后让我输出data

标签: jquery laravel laravel-blade


【解决方案1】:

要做出错误响应,您需要指定错误代码,例如400

return response(['error' => 'Message.'],400)->header('Content-Type', 'application/json');

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-14
    • 2016-11-03
    • 1970-01-01
    • 2021-08-17
    • 2015-09-06
    • 1970-01-01
    • 2021-01-27
    • 2017-08-14
    相关资源
    最近更新 更多