405 方法不允许 - 带有 laravel 路由的 ajax 请求


405 Method not allowed - ajax request with laravel route

调用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>

游戏.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);
        }
      });
}

知道了。当我在刀片文件中创建 ajax 请求时,url 始终采用以下形式:

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

但是由于请求在.js文件中,语法不再正确,所以我不得不更新它,如下所示:

url: window.location

由于发布请求与当前窗口具有相同的 URL。