错误 405 方法未分配异常,当使用 AJAX 与 Laravel 一起发布时


Error 405 Method Not Alowed Exception when post with AJAX with Laravel

我只想在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')"

希望对您有所帮助!