簡體   English   中英

如何解決Ajax發布請求在laravel中顯示500(內部服務器錯誤)

[英]how to solve Ajax post request show 500 (Internal Server Error) in laravel

在我的項目中,我想使用ajax將數據存儲到數據庫中,但是當我提交發布請求時,它顯示類似(500(Internal Server Error))的錯誤,我在Google上搜索了好幾次,但是仍然存在相同的問題,這是我的Ajax代碼

$.ajaxSetup({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            }
        });

$('#form-insert').on('submit', function(e){
          e.preventDefault();
          var data = $(this).serialize();
          var url = $(this).attr('action');
          var post = $(this).attr('method');
          $.ajax({
            type: post,
            url: url,
            data:{
                   _token: '{!! csrf_token() !!}',
                   data
                 },
            dataType: 'json',
            success:function(data){
              console.log(data)
            }
          })
        })

這是我的看法

<form method="post" id="form-insert" action="{{ URL::to('item/store')}}">
    <div class="form-group">
      <label for="name">Name</label>
      <input type="text" class="form-control" name="name">
    </div>
     <div class="form-group">
      <label for="text">Email address:</label>
      <input type="email" class="form-control" name="email">
    </div>
    <div class="form-group">
      <label for="contact_no">Contact No:</label>
      <input type="text" class="form-control" name="contact_no">
    </div>
    <button type="submit" class="btn btn-primary pull-right" id="add">Submit</button>
  </form>

這是我的路線

Route::post('/item/store', 'AjaxCrudController@store');

這是我的控制器

public function store(Request $request)
    {
        if($request->ajax()){
            $item = AjaxCrud::create($request->all());
            return response($item);
            //return response($request->all());
        }
    }

您正在嘗試將要提交的數據插入到ajax請求中:

data:{
   _token: '{!! csrf_token() !!}',
   data
}

這意味着您正在嘗試創建一個包含兩個鍵的AjaxCrud資源: _tokendata 我想您只想存儲包含在data對象中的data ,即您的序列化表格,應包含name屬性。

因此,您有多種解決方案,第一種是從數據對象創建AjaxCrud資源:

$item = AjaxCrud::create($request->get('data'));

另一種解決方案是僅在ajaxRequest中發送所需的數據,並將CSRF令牌設置為請求的標頭。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM