错误405方法不允许使用带有Laravel的AJAX发布时出现异常

时间:2015-01-06 03:09:49

标签: javascript php jquery ajax 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);
  });
}

所以我的路线是&#34; addArt&#34;并且总是像我一样有路线:

Route::post('addArt',"CarsController@addArt");

在我的控制器中,我只是通过简单的laravel插入将文章添加到购物车,但我收到错误405(方法未开始)。

有人可以帮我解决这个问题吗?

2 个答案:

答案 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')"

希望有所帮助!