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
相关产品推荐
相关产品推荐

