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

如何将JavaScript变量作为参数正确传入Laravel的route辅助函数

你当前写法的根本问题是Blade模板的渲染时机早于JavaScript运行时机:{{ route() }} 是PHP服务端语法,会在服务器返回页面前就完成渲染;而row.idx是客户端JS变量,此时还不存在,所以PHP会直接把你写的"+ row.idx +"当成普通字符串拼入路由,才会出现你遇到的结果。

所有写在{{ }}内的内容都会被PHP直接处理,不要尝试在Blade语法中嵌入JS变量,可通过以下两种方案解决:


方案1:占位符替换法(最推荐)

先在服务端生成带唯一占位符的路由模板,后续在JS中用实际变量替换占位符即可,完全复用Laravel路由配置,后续修改路由定义不需要调整JS代码:

<script>
// 服务端提前生成带占位符的路由模板
const userUpdateRouteTpl = "{{ route('admin.user.update', ['id' => '__USER_ID__']) }}";

// 需要使用时替换占位符为实际JS变量值
let url = `<a href="${userUpdateRouteTpl.replace('__USER_ID__', row.idx)}" class="link-success">`;
</script>

方案2:路由前缀拼接法

如果路由参数只有一个且结构简单,可以先生成无参数的路由前缀,再在JS中拼接参数:

<script>
// 服务端生成不带参数的路由前缀,rtrim用于去除末尾多余的斜杠
const userUpdateRoutePrefix = "{{ rtrim(route('admin.user.update', ['id' => '']), '/') }}";

// 直接拼接JS变量作为参数
let url = `<a href="${userUpdateRoutePrefix}/${row.idx}" class="link-success">`;
</script>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:27:04