express.js - 呈现完整数据

时间:2014-08-28 09:06:32

标签: javascript html node.js express

我正在尝试渲染一个对象数组(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()的结果:

[{&quot;name&quot;:&quot;1&quot;,&quot;y&quot;:5},{&quot;name&quot;:&quot;2&quot;,&quot;y&quot;:2}]

util.inspect的结果:

[ { name: &#39;1&#39;, y: 5 }, { name: &#39;2&#39;, y: 2 } ]

编辑: 我现在明白发生的事情是'被转义为html,有没有办法阻止它?

2 个答案:

答案 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(/&quot;/g, '"'),
                theme = JSON.parse(json);
            console.log(theme);
        </script>
    </body>
</html>

答案 1 :(得分:1)

为什么不使用<%-而不是<%=,并传递对象JSON.stringify()方法。

第一个将以HTML格式呈现对象,第二个将呈现变量(因为它们是eval)