javascript - 服务器上的 Node.js 对象不是客户端上的对象
问题描述
我在 Node.js 的服务器端有一个变量,它是一个对象。我可以验证这一点,console.log(typeof(value));
我得到了object
。
当我做一个console.log(value);
我得到
[ 'bla_bla_1',
'bla_bla_2',
'bla_bla_3',
]
然后我用 Express: 将变量传递给客户端,res.render('target.ejs', {data:value});
然后 ejs 文件用它解析它var value = '<%= data %>';
我想知道它是一个对象还是一个数组,以便弄清楚如何在客户端处理它。
我写了一个小脚本来测试它:
if (typeof(value) === 'object') {console.log("IT'S AN OBJECT");}
else {console.log("IT'S NOT AN OBJECT");}
if ( Array.isArray(value) ) {console.log("IT'S AN ARRAY");}
else {console.log("IT'S NOT AN ARRAY");}
我得到的是浏览器控制台中的这个:
IT'S NOT AN OBJECT
IT'S NOT AN ARRAY
解决方案
使用 EJS 语法解析后,该值是一个简单的字符串。
EJS Doc指定如何按原样设置值。
<%-
将未转义的值输出到模板中
试试下面:
var value = <%- JSON.stringify(data) %>;
推荐阅读
- linux-kernel - 如何找到特定系统调用错误源自哪个内核函数?
- c# - NUGET 包更新后项目失败
- javascript - 如何在没有 .require() 方法的情况下使用 GULP 将导入/导出转换为 es5?
- java - 在 Spring 中注入多个冲突的依赖项
- python - 如何模拟更真实的物体运动?
- sql - HQL 的子查询不返回任何内容
- android - 带有 Firebase 托管的 Android Instant App
- javascript - 作为反应,如何选择/检查单选按钮?
- google-cloud-platform - 为什么我的 MX 记录没有在 Google Cloud Platform 上刷新?
- reactjs - React Redux,组件内部状态同步