如何在 Javascript 中使用路由

Posted

技术标签:

【中文标题】如何在 Javascript 中使用路由【英文标题】:How to use route in Javascript 【发布时间】:2020-03-02 02:48:39 【问题描述】:

我想在 javascript 中使用路由,但我收到错误 Route [product.like + productid] not defined. 有什么办法可以使用路由代替吗?

阿贾克斯

 $.ajax(
        method: 'post',
        url: ' route('product.like'  productid) ',
        data: 
            'user_id': userid,
            'product_id': productid,
        ,

路线

  Route::post('product/like/id', ['as' => 'product.like', 'uses' => 'LikeController@likeProduct']);

【问题讨论】:

我认为你只需要使用"而不是'url: " route('product.like', $productid) ",,只要这个$.ajax()调用在<script>标签内.blade.php,它应该可以正常工作。哦,$productid 需要是一个 php 变量。如果productid是JS变量,这种方式就行不通了。 我如何定义productid,因为我收到错误Undefined variable: productid@TimLewis $productid 可以从处理此视图的控制器函数中传递,因为它应该被定义为 URL 参数。 我有这个按钮,我可以在其中获得产品 ID <a style="display: $product->isLiked ? "" : "none"" id="afavourite$product->id" onClick="AddFavourites($product->id, Auth::user() ? Auth::user()->id : 0 )" >@TimLewis 嗯好吧,如果你这样做,那么$productid 将不是 PHP 变量。不要使用route() 助手,只需使用基本字符串:url: '/product/like/' + productid',或使用url() 助手:url: " url('/product/like/') " + productid 【参考方案1】:

您可以将路由助手与字符串占位符一起使用,然后将占位符替换为 javascript 变量。

function AddFavourites(productid, userid) 
    let url = " route('product.like', ['id' => ':id']) ".replace(':id', productid);

    $.ajax(
        method: 'post',
        url: url,
        data: 
            'user_id': userid,
        ,
    ).done(function(response, status)
        //
    ).fail(function(jqXHR, textStatus, errorThrown)
        //
    );

【讨论】:

以上是关于如何在 Javascript 中使用路由的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JavaScript 中获取路由参数?

如何在 AJAX 调用中获取 JavaScript 变量作为 Laravel 路由名称

如何从刀片模板中的 Javascript 文件重定向 Laravel 路由

如何在 laravel 的 javascript 代码中设置路由名称

如何使用 ASP.NET MVC 5 中的 JavaScript 在运行时使用路由值增加 actionlink?

如何在 Javascript Laravel Blade 中编写路由 URL?