我只想在JS中使用onclick事件向控制器发送两个变量,我正在使用laravel框架和JQuery Ajax。
我的onclick电话是:
onclick="addArt(<?php echo Session::get("ID") ?>, <?php echo $article->idArticle ?>)"
这是我的JS表格中的一个功能:
function addArt(idUser, idArt){
$.post( "addArt", { IDUser: idUser, IDArt: idArt})
.done(function( data ) {
location.reload();
})
.fail(function(e) {
console.log(e);
});
}
所以我的路线是&#34; addArt&#34;并且总是像我一样有路线:
Route::post('addArt',"CarsController@addArt");
在我的控制器中,我只是通过简单的laravel插入将文章添加到购物车,但我收到错误405(方法未开始)。
有人可以帮我解决这个问题吗?
答案 0 :(得分:0)
您收到该错误是因为您未将csrf令牌传递给post对象。
这将有效:
onclick="addArt(<?php echo Session::get("ID") ?>, <?php echo $article->idArticle ?>, <?php echo csrf_token(); ?>)"
在您的函数上,您需要传递_token值
function addArt(idUser, idArt, token){
$.post( "addArt", { IDUser: idUser, IDArt: idArt, _token: token})
.done(function( data ) {
location.reload();
})
.fail(function(e) {
console.log(e);
});
}
答案 1 :(得分:0)
如果你正在使用Laravel的Blade Templating,你可以改变一下,让它继续工作:
onclick="addArt('{{Session::get("ID")}}', '{{$article->idArticle}}')"
// " " does work inside the {{ }} tags if using Blade.
如果您现在检查元素,它应如下所示:
onclick="addArt('session', 'article')"
希望有所帮助!