【问题标题】:405 Method not allowed - ajax request with laravel route405 方法不允许 - 使用 laravel 路由的 ajax 请求
【发布时间】:2015-03-24 19:21:04
【问题描述】:

应该以这种方式调用 ajax 函数,我已经多次这样做了。这次我不断收到405 method not allowed。我知道这个问题是已知的,但我已经尝试了建议的解决方案,但仍然没有任何效果。 这是我的控制器:

public function playGame($custom_url)
    {
        $project = Project::where('custom_url', $custom_url)->where('approved', 1)->first();
        if(Request::isMethod('post'))
        {
            $project->play_count = $project->play_count+1;
            $project->save();
            return json_encode(array('status'=>array('saved')));
        }
        return View::make('game.index');
    }

index.blade.php:

<title>Tennra</title>
        <link rel="shortcut icon" href="favicon.png"/>

        <link href="{{URL::asset('game/style.css')}}" rel="stylesheet" type='text/css'>
        <link href="{{URL::asset('game/menu.css')}}" rel="stylesheet" type='text/css'>
        <script type="text/javascript" src="{{URL::asset('game/jq.js')}}"></script>
        <script type="text/javascript" src="{{URL::asset('game/mainMenu.js')}}"></script>
        <script type="text/javascript" src="{{URL::asset('game/game.js')}}"></script>
        <script type="text/javascript" src="{{URL::asset('game/main.js')}}"></script>
    </head>

    <body>

    </body>

games.js:

function startedGame() {
    /*********************************
    **********************************
    ***   Add Code Here if Needed  ***
    **********************************
    *********************************/

    $.ajax({
        type: "post",
        data: null,
        url: "{{URL::route('projects.game')}}"
      }).done(function( msg )
      {
        msg=JSON.parse(msg);
        if(msg['errors'])
        {
        }
        else if(msg['status'])
        {
            console.log(true);
        }
      });
}

【问题讨论】:

  • 如果您使用 Postman (chrome.google.com/webstore/detail/postman-rest-client/…) 测试 POST,也会发生同样的情况
  • @bitoiu 与邮递员完美配合,但在项目中尝试时仍然出错
  • 在 chrome 开发工具网络选项卡中,您看到请求发出了吗?它与 Postman 请求有何不同?假设 405 是一个服务错误(如果是客户端,就搞砸了),比较这两个请求,您应该能够查明客户端的框架做错了什么。
  • 也发布您的 routes.php。

标签: javascript php ajax laravel-4


【解决方案1】:

知道了。当我在刀片文件中创建 ajax 请求时,url 总是采用这种形式:

url: "{{URL::route('urlname')}}"

但由于请求在 .js 文件中,语法不再正确,因此我不得不将其更新如下:

url: window.location

由于 post 请求与当前窗口具有相同的 url。

【讨论】:

    猜你喜欢
    • 2019-03-25
    • 2017-05-31
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    • 2019-05-10
    • 1970-01-01
    • 2021-08-16
    • 2020-03-19
    相关资源
    最近更新 更多