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

如何在EJS模板中显示对象属性?现有代码无法运行求助

解决EJS模板无法显示服务器传递对象属性的问题

别着急,咱们一步步排查问题,大概率是这几个环节出了状况,我帮你逐个梳理:

1. 先确认服务器端是否正确传递了urldata变量

这是最常见的坑!比如你用Express框架的话,渲染模板时必须明确把urldata作为参数传进去,示例代码如下:

// 服务器端(Express示例)
const urldata = { country: 'Singapore', scn: 'SG', sccy: 'SGD', rcn: 'India', rccy: 'INR', amt: '1000' };

// 渲染模板时一定要把urldata传进去
app.get('/your-route', (req, res) => {
  res.render('your-template-filename', { urldata: urldata });
  // 或者简写:res.render('your-template-filename', { urldata });
});

如果没做这一步,模板里的urldata就是undefined,自然无法读取country属性。

2. 检查EJS模板中的语法是否合适

你用的<%- urldata.country %>是用来输出不转义的HTML内容的,如果只是输出普通文本(比如'Singapore'),更推荐用<%= urldata.country %>,不过这两种语法本身都能运行,前提是urldata存在。

如果担心urldata可能为undefined导致报错,可以加个判断兜底:

<% if (urldata) { %>
  国家:<%= urldata.country %>
  地区代码:<%= urldata.scn %>
<% } else { %>
  暂无数据
<% } %>

3. 排查是否存在变量名拼写错误

仔细检查服务器端的变量名和模板里的是否完全一致——比如服务器端是urlData(驼峰写法),模板里写的是urldata(全小写),这种拼写错误也会导致无法读取属性。

4. 调试:直接打印urldata确认是否存在

可以在模板里先打印整个urldata,确认它是否真的被传递过来了:

<% console.log(urldata) %> <!-- 会在服务器控制台输出 -->
<!-- 或者在页面上输出完整对象: -->
<%= JSON.stringify(urldata) %>

如果控制台输出undefined,那肯定是服务器端没传变量;如果输出了正确的对象,那就是读取属性时的细节问题(比如拼写错误)。

按照这几步排查,应该就能解决问题啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:19:04