405方法不允许在laravel应用程序中进行POST和PUT

Posted

技术标签:

【中文标题】405方法不允许在laravel应用程序中进行POST和PUT【英文标题】:405 Method Not Allowed for POST and PUT in laravel application 【发布时间】:2020-07-07 05:27:28 【问题描述】:

我正在尝试在 laravel 中删除并调整全日历中的事件大小,但是当我移动事件时,出现 405 Method Not Allowed 错误消息!..

我的 web.php 文件:

Route::get('calendar', 'FullCalendarController@index');
Route::get('/load-events', 'EventController@loadEvents')->name('routeLoadEvents');
Route::put('/events-update', 'EventController@update')->name('routeEventUpdate');

我的 Blade.php 文件:

<div id='calendar' 
data-route-load-events="route('routeLoadEvents')" 
data-route-events-update="route('routeEventUpdate')"></div>

我的 .js 文件:

$(function ()
    $.ajaxSetup(
       headers: 
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
       
    );
);

function sendEvent(route, data_)
    $.ajax(
        url: route,
        data: data_,
        method: 'POST',
        dataType: 'json',
        success: function(json)
            if(json)
                location.reload();
            
        
    );


function routeEvents(route)
    return document.getElementById('calendar').dataset[route];


eventDrop: function(element)

        let start = moment( element.event.start ).format("YYYY-MM-DD HH:mm:ss");
        let end = moment( element.event.end ).format("YYYY-MM-DD HH:mm:ss");

        let newEvent = 
            _method: 'PUT',
            id: element.event.id,
            start: start,
            end: end
        ;

        sendEvent(routeEvents('routeEventUpdate'), newEvent);

      ,

【问题讨论】:

【参考方案1】:

所以 Laravel 真正理解的请求实际上只有两种:

POST & GET

PUT 请求是 POST 请求,其方法为 PUT

laravel 正在寻找的是请求中的 _method 参数,告诉它这是什么类型的请求。在你的情况下_method: PUT


试试这个:

$.ajax(
    url: route,
    data: data_,
    method: 'PUT',
    dataType: 'json',
    success: function(json)
        if(json)
            location.reload();
        
    
);

【讨论】:

【参考方案2】:

您将“put”方法放入您的有效负载数据中,AJAX 函数将无法识别。尝试将方法添加为参数

函数 sendEvent(route, data_, sendMethod) ... 方法:发送方法, ...

然后打电话给我

sendEvent(routeEvents('routeEventUpdate'), newEvent, 'PUT');

【讨论】:

我总是遇到同样的错误:不允许使用 PUT 方法

以上是关于405方法不允许在laravel应用程序中进行POST和PUT的主要内容,如果未能解决你的问题,请参考以下文章

AJAX 请求中不允许使用 Laravel 405 方法

在 Laravel 5.2 上路由文件路径时出现 405(不允许的方法)

405 方法不允许,PATCH 不工作。 Laravel、Ajax、Jquery、引导模式

Laravel 中不允许使用奇怪的 405 方法

405 - 机器人框架中不允许的方法

Laravel 5.1 AJAX - 即使我发送 POST 请求,也不允许返回 405 GET 方法