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

Node.js中EJS如何向定义双参数的Express路由传递参数并避免报错

解决方案

你当前的路由定义的是&拼接的路径参数,不是?开头的查询参数,所以需要调整EJS中链接的拼接规则,同时加变量兜底判断避免未定义报错。

1. 直接修改EJS代码(即刻生效)

直接替换你的a标签代码如下即可:

<a class="btn btn-primary btn-md bg-gray mb-mobile" 
   href="/expense/pettycashlistview/<%= parentExpenseId %>&<%= typeof buttonDisable !== 'undefined' ? buttonDisable : 'false' %>" 
   id="createNewPettyCashButton">
  Go To Petty Cash
</a>

这里用typeof判断buttonDisable是否存在,不存在就默认传false,完全避免未定义报错。

2. 更稳妥的优化方案(推荐)

  • 首先在渲染当前EJS模板的路由逻辑中,显式传递buttonDisable的默认值,从根源避免变量未定义:
// 渲染该EJS页面的路由代码示例
res.render('你的EJS模板文件名', {
  parentExpenseId: 你的业务取值,
  // 没有业务取值时默认传false,不用再在EJS里做判断
  buttonDisable: 业务中定义的buttonDisable变量 || false
});
  • 也可以调整路由的参数分隔规则为更规范的斜杠分隔,符合常规RESTful接口设计:
    修改路由定义:
router.get('/pettycashlistview/:expenseId/:isDisabled',verify,(request, response) => {
  // 原有逻辑不变
})

对应EJS的链接修改为:

<a class="btn btn-primary btn-md bg-gray mb-mobile" 
   href="/expense/pettycashlistview/<%= parentExpenseId %>/<%= buttonDisable %>" 
   id="createNewPettyCashButton">
  Go To Petty Cash
</a>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:54:02