我只想在JS中使用onclick事件向我的控制器发送两个变量,我正在使用laravel框架和JQuery Ajax。
我的点击电话是:
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);
});
}
所以我的路线是"addArt",像往常一样,我有路线:
Route::post('addArt',"CarsController@addArt");
在我的控制器中,我只是通过简单的插入 laravel 将文章添加到购物车中,但我得到一个错误 405(方法未被取消)。
谁能帮我解决这个问题?
您收到该错误是因为您没有将 csrf 令牌传递给您的帖子对象。
这将起作用:
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);
});
}
如果您使用的是 Laravel's Blade 模板,您可以稍作更改并使其正常工作:
onclick="addArt('{{Session::get("ID")}}', '{{$article->idArticle}}')"
// " " does work inside the {{ }} tags if using Blade.
如果现在检查该元素,它应如下所示:
onclick="addArt('session', 'article')"
希望对您有所帮助!