Laravel ajax — метод POST не поддерживается для этого маршрута. Поддерживаемые методы: GET, HEAD

#javascript #laravel

#javascript #laravel

Вопрос:

Я пытаюсь создать ajax в laravel и получаю следующее: «Метод POST не поддерживается для этого маршрута. Поддерживаемые методы: GET, HEAD». Проблема в том, что я уже делал ajax в своем проекте раньше, только с этим у меня проблема. Кто-нибудь может помочь?

Мой маршрут:

 Route::get('/admin/clients-data','AppHttpControllersClientsController@gravy');
Route::get('/admin/client-details/{slug}','AppHttpControllersClientsController@clientdetails');
Route::post('/admin/client-details/adddocumentstoclient','AppHttpControllersClientsController@adddocumentstoclient');
  

Мой контроллер:

 public function adddocumentstoclient(Request $request){
        echo '<pre>';
        var_dump('bump');
        echo '</pre>';
        die();
    }
  

И мой js:

 $('.tasks input').on('click', function() {
        var emptyValue = 0;
        $('input:checked').each(function() {
            emptyValue  = parseInt($(this).val());
        });
        var documents_brought = [];
        var documents = $('.documents_brought input:checked').each(function(){
            documents_brought.push($(this).data('documentid'));
        });
        var client_id = $('.documents_brought').data('clientid');
        $.ajax({
            headers: {
                'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
            },
            type: "POST",
            url: "adddocumentstoclient",
            data: {'documents_brought':documents_brought,'client_id': client_id},
            success: function (html) {
                // returndata =  JSON.parse(html);;
                // toastr.success(returndata.message, returndata.title);
            }
        });
        $('.progress-bar').css('width', emptyValue   '%').attr('aria-valuenow', emptyValue);
    });
  

Заранее спасибо

Комментарии:

1. Ваш путь не соответствует, попробуйте этот url: "/admin/client-details/adddocumentstoclient",

2. не работает, я пробовал

3. Введите name route, и он будет работать Route::post('/admin/client-details/adddocumentstoclient','AppHttpControllersClientsController@adddocumentstoclient')->name('adddocumentstoclient'); , и на вашем блейд-адресе ajax будет url: "{{ route('adddocumentstoclient') }}",

4. Route::post(‘/admin/client-details/adddocumentstoclient’,’AppHttpControllersClientsController@adddocumentstoclient’)->name(‘adddocumentstoclient’) ; Маршрут [adddocumentstoclient] не определен

5. Да, чувак, это было так, добавлено -> name(‘adddocumentstoclient’), очистить маршруты и ‘bum’. Спасибо

Ответ №1:

Хорошо, проблема здесь

 Route::get('/admin/client-details/{slug}','AppHttpControllersClientsController@clientdetails');
Route::post('/admin/client-details/adddocumentstoclient','AppHttpControllersClientsController@adddocumentstoclient');
  

Первый маршрут get , и вы принимаете slug параметр, поэтому всякий раз, когда вы нажимаете /admin/client-details/adddocumentstoclient , он будет сопоставляться с первым маршрутом, который есть get , и вы никогда не достигнете своего второго маршрута.

Решение здесь, чтобы добавить префикс перед slug in /admin/client-details/{slug} или изменить второй префикс маршрута /admin/client-details/ , чтобы различать оба маршрута.