Маршрут Laravel не работает в API, возвращает страницу 404 - PullRequest
0 голосов
/ 29 октября 2018

В маршрутах / api.php у меня есть следующий маршрут:

Route::post('/session/storeValue', 'HomeController@storeValue');

А в контроллере у меня есть функция AJAX:

<script>

        function noviArtikal() {

  var data = { name: 'User');

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

  $.ajax({
    type: "POST",
    url: '/session/storeValue',
    data: data,
    success: function() {
      console.log("Valueadded");
    }
  });

        };
</script>

Но продолжайте получать страницу с ошибкой, не найденную при отправке вызова AJAX. Что я делаю не так?

Ответы [ 4 ]

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

просто дайте любое имя маршруту, например:

Route::post('/session/storeValue', 'HomeController@storeValue')->name('somename');

и в вашем вызове ajax просто измените атрибут url на: url: '{{ route('somename')}}',

Laravel присоединяет / api к маршрутам api автоматически через RouteServiceProvider, и он находится в папке /Providers.

Кроме того, вам не нужно csrf_token, когда вы делаете вызов Api.

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

добавьте этот код в ваш маршрут / web.php

Route::post('/session/storeValue', 'HomeController@storeValue');
0 голосов
/ 29 октября 2018

Для начала вам не нужно отправлять CSRF_TOKEN на api. Нет смысла проверять CSRF-TOKEN, потому что это API. Также для отправки запроса в API необходимо добавить api префикс manualy.

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

Поскольку это api.php, он автоматически добавляет / api / к вашему URL. Попробуйте /api/session/storeValue.

Из документов:

Маршруты, определенные в файле route / api.php, вложены в маршрут группа по RouteServiceProvider. В этой группе / api URI Префикс применяется автоматически, поэтому вам не нужно применять вручную это к каждому маршруту в файле. Вы можете изменить префикс и другие параметры группы маршрутов путем изменения класса RouteServiceProvider.

EDIT:

добавить имя:

Route::post('/session/storeValue', 'HomeController@storeValue')->name('custom_name');

Затем измените свой JavaScript:

$.ajax({ type: "POST", url: '/session/storeValue', data: data,

до

$.ajax({ type: "POST", url: '{{ route('custom_name')}}', data: data,

РЕДАКТИРОВАТЬ 2: И да, не отправляйте CSRF_TOKEN (проверьте ответ @Yur Gasparyan)

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