【问题标题】:Error 405 Method Not Alowed Exception when post with AJAX with Laravel使用 Laravel 使用 AJAX 发布时出现错误 405 方法不允许异常
【发布时间】:2015-01-06 03:09:49
【问题描述】:

我只想通过 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(不允许使用方法)。

谁能帮我解决这个问题?

【问题讨论】:

  • 您的 onclick 方法中的双引号内有双引号。
  • 检查你是否在表单中使用xsrf保护?

标签: javascript php jquery ajax laravel


【解决方案1】:

您收到该错误是因为您没有将 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);
  });
}

【讨论】:

  • Itryed with that but I catch this: Uncaught ReferenceError: SQz357JLjhShufbaxKzRx4QlKUIgQ6o1xZ3b0Hjq is not defined
  • 我的错误是在路线的路径上,但还是谢谢你
【解决方案2】:

如果你使用的是 Laravel 的 Blade 模板,你可以稍作改动并让它仍然工作:

onclick="addArt('{{Session::get("ID")}}', '{{$article->idArticle}}')"
// " " does work inside the {{ }} tags if using Blade.

如果您现在检查元素,它应该如下所示:

onclick="addArt('session', 'article')"

希望有帮助!

【讨论】:

    猜你喜欢
    • 2020-11-19
    • 2019-07-29
    • 2018-02-28
    • 1970-01-01
    • 2020-12-13
    • 2017-07-22
    • 2020-03-19
    • 2018-01-25
    • 1970-01-01
    相关资源
    最近更新 更多