我正在尝试渲染一个对象数组(highcharts points)。数据应该没问题,但是当我尝试渲染时,我会得到[object Object]
而不是数据本身。
JSON.stringify()
与HTML无关。
util.inspect
,也没有,并添加数据。
toString()
给我和渲染一样。
我不知道还有什么可以尝试,我想发送的是高清图形的数据。
最小例子:
app.js:
var express = require('express'),
app = express();
app.listen(8080);
app.get('/', function (req, res) {
var view = 'test.ejs',
theme = [{name: '1', y: 5}, {name: '2', y: 2}];
res.render(view, {theme: theme});
console.log('ok');
});
theme_days.ejs:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<script type="text/javascript">
<%= theme %>
</script>
</body>
</html>
结果(好像,toString()
):
[object Object],[object Object]
JSON.stringify()
的结果:
[{"name":"1","y":5},{"name":"2","y":2}]
util.inspect
的结果:
[ { name: '1', y: 5 }, { name: '2', y: 2 } ]
编辑:
我现在明白发生的事情是'
被转义为html,有没有办法阻止它?
答案 0 :(得分:1)
我最终得到了这个:
小心,这是次优的:app.js
var express = require('express'),
app = express(),
util = require('util');
app.listen(8080);
app.get('/', function (req, res) {
var view = 'test.ejs',
theme = [{"name": "1", "y": 5}, {"name": "2", "y": 2}];//Added "
console.log(JSON.stringify(theme));
res.render(view, {theme: JSON.stringify(theme)});
console.log('ok');
});
test.ejs:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<script type="text/javascript">
var json = '<%= theme %>'.replace(/"/g, '"'),
theme = JSON.parse(json);
console.log(theme);
</script>
</body>
</html>
答案 1 :(得分:1)
为什么不使用<%-
而不是<%=
,并传递对象JSON.stringify()方法。
第一个将以HTML格式呈现对象,第二个将呈现变量(因为它们是eval)