【发布时间】:2016-12-12 07:38:58
【问题描述】:
当您单击带有 ajax 的按钮时,我正在尝试添加新的购物车。我的代码如下:
1) 按钮
<a class="checkout-button">checkout</a>
2) 阿贾克斯
$('.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。但是,当我从数据库中读取时,它可以工作。我发现了类似的问题,我认为令牌出了点问题,但我无法解决问题。
谁能帮帮我?
【问题讨论】:
-
嗨..你确定你只通过
$_POST方法访问路线吗?我的意思是你可能没有在$_GET方法中重定向到那条路线,只是询问 -
这条路线既有get也有post,但我尝试了一条只有post方法的不同路线,但没有成功。
-
我明白了,因为您没有将
$_GET包含在您的路线中,请将其更改为Route::any(array('post','get'),'/checout',[ 'uses' => 'checkoutController@insertCart', 'as' => 'postcheckout' ]);或仅添加Route::get('/checout',[ 'uses' => 'checkoutController@insertCart', 'as' => 'postcheckout' ]); -
它有效!但为什么我也必须使用 get 方法?
-
你可以使用
any(array('post','get'))