当 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')"

希望对您有所帮助!