405 Метод не разрешен для POST и PUT в приложении laravel - PullRequest
0 голосов
/ 26 марта 2020

Я пытаюсь удалить и изменить размер события в fullcalendar в laravel, но при перемещении события появляется сообщение об ошибке 405 Method Not Allowed! ..

My web. php файл:

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

Мой клинок. php Файл:

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

My. js file:

$(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);

      },

Ответы [ 2 ]

0 голосов
/ 26 марта 2020

Вы помещаете свой метод "put" в свои полезные данные, это не будет распознаваться функцией AJAX. Попробуйте добавить метод в качестве аргумента

функция sendEvent (route, data_, sendMethod) {
...
метод: sendMethod,
...

И позвоните мне через

sendEvent(routeEvents('routeEventUpdate'), newEvent, 'PUT');
0 голосов
/ 26 марта 2020

Таким образом, на самом деле существует только два типа запросов, которые Laravel действительно понимает:

POST & GET

A PUT запрос - это POST запрос с метод PUT.

То, что ищет laravel, - это параметр _method в запросе, сообщающий ему, какой это тип запроса. в вашем случае _method: PUT.


Попробуйте это:

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