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

EJS嵌套变量使用问题:如何在if条件中使用EJS变量?

EJS结合express-validator显示字段错误的正确姿势

先搞定服务器端的传参

服务器里得先把express-validator的验证结果正确传给EJS模板,示例代码:

const { validationResult } = require('express-validator');

app.post('/your-form-path', [
  // 这里写你的验证规则,比如 check('card').isLength({ min: 5 }).withMessage('卡号太短')
], (req, res) => {
  const errors = validationResult(req);
  if (!errors.isEmpty()) {
    // 把错误数组和目标字段名idName一起传给模板
    return res.render('your-template', { errors: errors.array(), idName: 'card' });
  }
  // 验证通过后的业务逻辑
});

EJS模板里的正确写法

别搞客户端脚本那套,直接在EJS的服务器端脚本块里处理变量,再做判断:

<% 
// 从错误数组里筛选出当前idName对应的错误
const errCard = errors.find(err => err.param === idName);
%>

<% if (errCard) { %>
  <div class="error"><%= errCard.msg %></div>
<% } %>

为啥之前的写法不行?

  • 直接嵌套写法:如果是在EJS标签里错误嵌套EJS语法,解析器会直接报错,必须在EJS的<% %>脚本块里先处理变量,再做条件判断。
  • 用<script>定义变量:<script>里的代码是客户端浏览器运行的,而EJS的if判断是服务器端渲染模板时执行的,两者完全不在一个环境,服务器根本看不到客户端定义的errCard,自然会提示未定义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 17:41:00