You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在jQuery拼接的Laravel路由字符串中插入JavaScript变量值?

解决方法

核心问题在于:Laravel的route()函数是后端Blade模板渲染时执行的,而你的JS变量id是前端页面运行时才获取到的动态值,两者无法直接混合使用,必须拆分处理。

下面是两种可行的实现方式:

方式1:拼接基础路由URL

先通过Blade生成包含已知参数($user->nip)的基础路由,再用JS把动态的id拼接到URL末尾:

var id = $(this).val();
// 后端生成带nip的基础路由前缀
var baseRoute = "{{ route('report.pdf', [$user->nip]) }}";
// 拼接id参数得到完整URL
var fullUrl = baseRoute + '/' + id;
// 渲染按钮HTML
$('#button_cetak').html('<a href="' + fullUrl + '" class="btn btn-warning btn-block"><i class="fas fa-print"></i> Cetak</a>');

方式2:占位符替换

先在Blade生成路由时用一个占位符代替动态参数,再用JS替换成实际的id值:

var id = $(this).val();
// 后端生成带占位符的完整路由结构
var routeTemplate = "{{ route('report.pdf', [$user->nip, 'PLACEHOLDER_ID']) }}";
// 替换占位符为真实id
var fullUrl = routeTemplate.replace('PLACEHOLDER_ID', id);
// 渲染按钮HTML
$('#button_cetak').html('<a href="' + fullUrl + '" class="btn btn-warning btn-block"><i class="fas fa-print"></i> Cetak</a>');

注意事项

  • 请确保你的Laravel路由report.pdf定义时包含两个参数,示例如下:
    Route::get('/report/pdf/{nip}/{id}', [ReportController::class, 'generatePdf'])->name('report.pdf');
    
  • 如果id是可选参数,需要在路由定义中给参数加上?(如{id?}),但这类打印场景下参数一般为必填。

内容的提问来源于stack exchange,提问作者dwi prihta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 08:55:17