Ошибка 405 в сообщении ajax с методом javascript to laravel - PullRequest
0 голосов
/ 03 октября 2019

Я пытаюсь создать пост-ajax-запрос с помощью btn click, и я получаю сообщение об ошибке 405. Я немного искал и включил часть токена в свой файл в заголовке,

<meta name="csrf-token" content="{{ csrf_token() }}"> 

И в моем ajax-запросе

$.ajax({
            method: "POST",
            type: "POST",
            url:"/bebedouros/saveInfo/",
            data:{
                "_token": "{{ csrf_token() }}",        
                IdVisitaBebedouro:id,
                TipoBebedouro:tipoBebedouro,
                Higiene:higiene,
                Fluxo:fluxo,
                Comprimento:comprimento
            },
            processData:true,
            success: function(data){
                alert('informação gravada com sucesso');
            }
        });

И в моем файле маршрутов у меня есть это,

Route::post('/bebedouros/saveInfo/','BebedourosController@saveInfo');

И метод saveInfo существует в BebedourosController

IЯ также пытался вставить токен в настройке AJAX и ничего. Кто-нибудь знает другое решение? Похоже, что onclick вызывает метод и возвращает 301, а затем 405 бу с отладчиком, он вводится только один раз в запрос ajax.

Ответы [ 3 ]

0 голосов
/ 03 октября 2019

Похоже, что ваша функция отсутствует или вы не указали правильный путь внутри функции ajax. Сначала назовите маршрут

Route::post('/bebedouros/saveInfo/','BebedourosController@saveInfo')->name('saveInfo');

Затем вызовите функцию маршрута внутри вашей функции ajax

$.ajax({
            method: "POST",
            type: "POST",
            url:"{{ route('saveInfo') }}",
            data:{
                "_token": "{{ csrf_token() }}",        
                IdVisitaBebedouro:id,
                TipoBebedouro:tipoBebedouro,
                Higiene:higiene,
                Fluxo:fluxo,
                Comprimento:comprimento
            },
            processData:true,
            success: function(data){
                alert('informação gravada com sucesso');
            }
        });
0 голосов
/ 03 октября 2019

Возможная проблема связана с присваиваемым значением type, которое будет application/json, но в настоящее время оно присваивается POST. POST действителен только для метода. А также измените заголовок вызова ajax с информацией о токене, как указано в @ arunj

0 голосов
/ 03 октября 2019

Попробуйте:

Заголовок:

<meta name="csrf-token" content="{{ csrf_token() }}" />

Поместите следующий код над вызовом Ajax и удалите токен внутри данных в Ajax.

Ajax:

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

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...