繁体   English   中英

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

[英]Refer to Laravel route that have a prefix - Javascript AJAX - 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内部服务器错误49ms]

但是路径(shoppingCard / addToBasket)看起来很好,为什么我会出错? 我对此有些困惑

谢谢你的帮助!

尝试使用

$(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() 我放进去了

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

我给你一个创建多个路由的例子。 我从给定的链接 这是一个示例,您可以以此创建自己的路线。 这是示例:

  1. 创建两个路由文件routes.web.php和routes.api.php
    1. 编辑RouteServiceProvider.php文件,使其看起来像下面的代码:(注意:您可以添加任意数量的路由,只需遵循相同的逻辑即可。)
<?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');
        });

    }
}

请回复我,它是否解决了您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM