Laravel路由在API中不起作用,返回页面404

时间:2018-10-29 10:27:29

标签: javascript php laravel

在routes / 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 :(得分:3)

因为它是api.php,它将自动将/ api /添加到您的URL。尝试/ api / session / storeValue。

来自文档:

  

routes / api.php文件中定义的路由嵌套在路由中   由RouteServiceProvider分组。在该组中,/ api URI   前缀是自动应用的,因此您无需手动应用   它到文件中的每条路线。您可以修改前缀和其他   通过修改RouteServiceProvider类来路由组选项。

编辑:

添加名称:

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答案)

答案 1 :(得分:3)

首先,您不需要将CSRF_TOKEN发送到api。检查CSRF-TOKEN是没有道理的,因为它是一个api。另外,要向api发送请求,您还需要手动添加api前缀。

答案 2 :(得分:0)

将此代码添加到您的route / web.php

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

答案 3 :(得分:0)

像这样简单地给路线起任何名字:

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

,在您的ajax调用中,只需将url属性更改为: url: '{{ route('somename')}}',

Laravel通过RouteServiceProvider自动将/ api附加到api路由,并且位于/Providers文件夹中。

在进行Api通话时,您也不需要csrf_token