请参阅具有前缀的Laravel路由 - Javascript AJAX - Laravel 5.3

时间:2017-03-01 14:33:15

标签: ajax laravel laravel-5 routing laravel-5.3

我的路由文件有问题,并且使用Ajax引用路由。以下是所有相关路线和ajax代码的片段:

web.php(基本路线文件)中的

我包括我需要的路线

require_once base_path('routes/shoppingcard.routes.php');

现在我的shoppingcard.routes.php就是这个让我烦恼的路线组

Route::group(['prefix' => 'shoppingCard'], function () {
    // add Produkt
    Route::post('addToBasket', ['as' => 'addToBasket', 'uses' => 'Shop\Frontend\AjaxController@index']);
});

我想引用addToBasket路由但直到现在才真正成功

这就是我的Ajax代码:

$(document).on('click', '#addToBasket', function () {
    var quantitie = $('input[type=number]').val();
    $.ajax({
        type: "post",
        url: "/shoppingCard/addToBasket",  // <----- Route I try to refer to
        data: {'id': $(this).data("id"), 'quantitie': quantitie},
        dataType: 'JSON',
        success: function (data) {
           // not important
        },
        error: function (data) {
           // not important
        }
    });
});

现在我尝试了很多东西来正确引用路线,但我总是得到500或404

我正在使用Laravel 5.3

我目前在控制台中收到的错误:

http://mypage.com/shoppingCard/addToBasket [HTTP / 1.0 500内部服务器错误49毫秒]

但路径(shoppingCard / addToBasket)看起来完全没问题,为什么我会收到错误? 我对此有点困惑

感谢您的帮助!

3 个答案:

答案 0 :(得分:0)

尝试使用

$(document).on('click', '#addToBasket', function () {
    var quantitie = $('input[type=number]').val();
    $.ajax({
        type: "post",
        url: "/shoppingCard/addToBasket",  // <----- Route I try to refer to
        data: {'id': $(this).data("id"), 'quantitie': quantitie},
        dataType: 'JSON',
        headers: {
            'X-CSRF-TOKEN': '{{ csrf_token() }}'
        },
        success: function (data) {
           // not important
        },
        error: function (data) {
           // not important
        }
    });
});

我认为你没有使用csrf_token()。我把它放在里面。

答案 1 :(得分:0)

我没有注意到您使用的是自定义路径文件。您是否已将自定义路径文件映射到RouteServiceProvider中?您可以在此处阅读:http://laravel-tricks.com/tricks/laravel-5-multiple-routes-files

答案 2 :(得分:0)

我给你举个例子来创建多个Route。我从给定的link开始。这是一个例子,你可以创建自己的路线。以下是示例:

  
      
  1. 创建两个路由文件routes.web.php和routes.api.php      
        
    1. 编辑RouteServiceProvider.php文件,使其类似于下面的代码:(注意:您可以根据需要添加任意数量的路径,只需遵循相同的逻辑。)
    2.   
  2.   
<?php

namespace App\Providers;

use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
use Illuminate\Routing\Router;

class RouteServiceProvider extends ServiceProvider
{

    /**
     * This namespace is applied to the controller routes in your routes file.
     *
     * In addition, it is set as the URL generator's root namespace.
     *
     * @var string
     */
    protected $webNamespace = 'App\Http\Controllers\Web';

    protected $apiNamespace = 'App\Http\Controllers\Api';

    /**
     * Define your route model bindings, pattern filters, etc.
     *
     * @param  \Illuminate\Routing\Router $router
     *
     * @return void
     */
    public function boot(Router $router)
    {
        //

        parent::boot($router);
    }

    /**
     * Define the routes for the application.
     *
     * @param  \Illuminate\Routing\Router $router
     *
     * @return void
     */
    public function map(Router $router)
    {

        /*
        |--------------------------------------------------------------------------
        | Web Router 
        |--------------------------------------------------------------------------
        */

        $router->group(['namespace' => $this->webNamespace], function ($router) {
            require app_path('Http/routes.web.php');
        });

        /*
        |--------------------------------------------------------------------------
        | Api Router 
        |--------------------------------------------------------------------------
        */

        $router->group(['namespace' => $this->apiNamespace], function ($router) {
            require app_path('Http/routes.api.php');
        });

    }
}

请回复我,它会解决您的问题。