如何在 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 中使用路由的主要内容,如果未能解决你的问题,请参考以下文章
如何在 AJAX 调用中获取 JavaScript 变量作为 Laravel 路由名称
如何从刀片模板中的 Javascript 文件重定向 Laravel 路由
如何在 laravel 的 javascript 代码中设置路由名称