POST http://127.0.0.1:8000/unlock 405(不允许使用方法)

时间:2019-07-24 11:20:35

标签: laravel

我想将解锁密钥传递给使用Ajax的路由,但不允许这样做。代码为我提供了方法不允许的错误。

我看不到代码中的错误,无论是路由错误还是其他错误

<script>
$(document).ready(function(){
$('.result-container').hide();
$('.unlock-btn').on('click', function(){
    $.ajax({
        url: "{{route('unlock')}}",
        method: 'post',
        data: {
            theme_id : {{$theme_id}},
            key : $('.key').val(),
        },
        success: function(data){
            console.log('success');
            if(data === '0')
                $('.result-container').show();
            else
            {
                window.location = "{{route('view', ['theme_id' => $theme_id])}}";
            }
        }
    })
});
});
</script>

2 个答案:

答案 0 :(得分:0)

因此,您的路线是一条路线,但在ajax中,您正在发送发布请求。更改为发布。

Route::post('/unlock', 'ThemeController@unlock')->name('unlock');

并在数据中添加一个令牌,否则您将因缺少CSRF而收到419错误。

    $.ajax({
        url: "{{route('unlock')}}",
        method: 'post',
        data: {
            theme_id : {{$theme_id}},
            key : $('.key').val(),
            "_token": "{{ csrf_token() }}",
        },
        success: function(data){
            console.log('success');
            if(data === '0')
                $('.result-container').show();
            else
            {
                window.location = "{{route('view', ['theme_id' => $theme_id])}}";
            }
        }
    })

答案 1 :(得分:-1)

您应该尝试以下操作:

您的路线类似:

Route::post('/unlock', 'ThemeController@unlock')->name('unlock');

您的Ajax呼叫方式如下:

$.ajax({
    url: "{{route('unlock')}}",
    type: 'post',
    data: {
        theme_id : {{$theme_id}},
        key : $('.key').val(),
        "_token": "{{ csrf_token() }}",
    },
    success: function(data){
        console.log('success');
        if(data === '0')
            $('.result-container').show();
        else
        {
            window.location = "{{route('view', ['theme_id' => $theme_id])}}";
        }
    }
})