繁体   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