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

时间:2016-12-12 07:38:58

标签: php ajax laravel token

当您点击带有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();
}

数据库有两列 - cart_id(主要,ai)和user_id

当我尝试插入新记录时,我收到错误500(内部服务器错误,其中显示:MethodNotAllowedHttpException。但是,当我从数据库中读取它时,它有效。我发现类似的问题,我认为出现了问题令牌,但我无法解决问题。

任何可以帮助我的人?​​

1 个答案:

答案 0 :(得分:0)

它会产生该错误,因为该路线没有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'
    ]);