Ошибка «Метод не разрешен» ajax jquery, когда URL имеет параметры (Laravel) - PullRequest
0 голосов
/ 18 октября 2018

JavaScript возвращает ошибку «Метод не разрешен», когда он обращается к URL-адресу, имеет параметры.

HTML
1.- <a href="{{ URL::to('acceso', ['option'=>'1']) }}">Acceso</a>
2.- <a href="{{ URL('acceso') }}">Acceso 2</a>

Первая опция возвращает ошибку.Второй вариант хорошо работает.

Это маршрут:

Route::get('/acceso/{option?}', function ($option = '') {   
   return view('acceso_Usuario')->with('option', $option);
});

Route::post('call', 'example_Controller@function_example');

Это контроллер:

class example_Controller extends Controller
{
   public function function_example(Request $request)
   {
       if ($request->ajax()) {

           return response()->json([
           ]);

       }
   } 
}

и это javascript

$(document).ready(function() {
    var route = "call";
    var token = $("#token").val();

    var parameters=
    {
    };

    $.ajax({
        url: route,
        headers: {'X-CSRF-TOKEN': token},
        type: 'post',
        dataType: 'json',
        data: parameters,
        contentType: 'application/x-www-form-urlencoded',
        success: function (data) {

        },
        error: function (msj) {
            alert("Error Ajax);
        }
    });

 });

кто-то, кто может мне помочь!:)

Ответы [ 4 ]

0 голосов
/ 18 октября 2018

Уже решено!Я объясняю свою проблему, потому что мне нравится, что вопросы всегда решаются, когда другие коллеги сталкиваются с такой же проблемой.

Проблема в том, что добавление параметра в URL-адрес изменяет корневой каталог файла javascript.Решение, которое я попробовал, заключается в «динамическом» представлении корневого каталога нашего веб-сайта, и таким образом Ajax будет правильно искать эту функцию.

$(document).ready(function() {

   **var currentDirectory = window.location.href;**
   **var rootDirectory = currentDirectory.substring(0, currentDirectory .indexOf("public") + 6);**

   **var route = rootDirectory + "/call";**
   var token = $("#token").val();

   var parameters=
   {
   };

    $.ajax({
    url: route,
    headers: {'X-CSRF-TOKEN': token},
    type: 'post',
    dataType: 'json',
    data: parameters,
    contentType: 'application/x-www-form-urlencoded',
    success: function (data) {

    },
    error: function (msj) {
        alert("Error Ajax);
    }
   });

});

Спасибо всем за помощь!:)

0 голосов
/ 18 октября 2018

измените ваш маршрут на

 var route = '{{url("call")}}';

, это сгенерирует абсолютную ссылку на ваш маршрут

0 голосов
/ 18 октября 2018

измените ваш ajax url

var url = '{{url("call")}}';

pass csrf token, используя этот способ в методе post

headers: {

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

},
0 голосов
/ 18 октября 2018

Ваш javascript выполняет запрос POST, но соответствующий маршрут определен как разрешающий только запросы GET, HEAD (with Route::get()).

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