当 post 与 AJAX 与 Laravel 时出现错误 405 方法不允许异常
Error 405 Method Not Alowed Exception when post with AJAX with Laravel
我只想通过 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);
});
}
所以我的路线是 "addArt" 和往常一样,我的路线是:
Route::post('addArt',"CarsController@addArt");
在我的控制器中,我只是通过简单插入 laravel 将文章添加到购物车,但我收到错误 405(方法不允许)。
谁能帮我解决这个问题?
您收到该错误是因为您没有将 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);
});
}
如果您使用的是 Laravel 的 Blade 模板,您可以稍作更改并让它继续工作:
onclick="addArt('{{Session::get("ID")}}', '{{$article->idArticle}}')"
// " " does work inside the {{ }} tags if using Blade.
如果您现在检查该元素,它应该如下所示:
onclick="addArt('session', 'article')"
希望对您有所帮助!
我只想通过 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);
});
}
所以我的路线是 "addArt" 和往常一样,我的路线是:
Route::post('addArt',"CarsController@addArt");
在我的控制器中,我只是通过简单插入 laravel 将文章添加到购物车,但我收到错误 405(方法不允许)。
谁能帮我解决这个问题?
您收到该错误是因为您没有将 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);
});
}
如果您使用的是 Laravel 的 Blade 模板,您可以稍作更改并让它继续工作:
onclick="addArt('{{Session::get("ID")}}', '{{$article->idArticle}}')"
// " " does work inside the {{ }} tags if using Blade.
如果您现在检查该元素,它应该如下所示:
onclick="addArt('session', 'article')"
希望对您有所帮助!