Laravel 在数据库中添加新记录 returns 错误

Laravel add new record in database returns error

当您单击带有以下 ajax.My 代码的按钮时,我正在尝试添加新购物车:

1) 按钮

<a class="checkout-button">checkout</a>

2) Ajax

$('.checkout-button').on('click', function(){
  var url = '{{route('postcheckout')}}';
  $.ajax({
    type : 'POST',
    url : url,
    headers: {'X-CSRF-TOKEN': '{{ csrf_token() }}' },
    data : {'user_id' : 5},
    success:function(data){
      console.log(data);
    }
  });
});

console.log和测试用数据。

3) 路线

Route::post('/checout',[
    'uses' => 'checkoutController@insertCart',
    'as' => 'postcheckout'
]);

4) 控制器

Use App\delivery_cart;

public function insertCart(Request $request){               
  $user_id = $request['user_id'];
  $cart = new delivery_cart;
  $cart->user_id = $user_id;
  $cart->save();
}

数据库有 2 列 - cart_id (primary,ai) 和 user_id.

当我尝试插入新记录时出现错误 500(内部服务器错误,提示:MethodNotAllowedHttpException。但是当我从数据库中读取时,它起作用了。我发现了类似的问题,我认为有些事情正在发生token错误,但我无法解决问题。

谁能帮帮我?

它生成该错误是因为该路由没有 get 方法进入您的路由

要解决这个问题,您必须将该方法注册到您的路由中。

更改路线

来自

Route::post('/checout',[
    'uses' => 'checkoutController@insertCart',
    'as' => 'postcheckout'
    ]);

Route::any(array('post','get'),'/checout',[
    'uses' => 'checkoutController@insertCart',
    'as' => 'postcheckout'
    ]);

或者您可以只添加

Route::get('/checout',[
    'uses' => 'checkoutController@insertCart',
    'as' => 'postcheckout'
    ]);