Jade / Expressjs:将对象从服务器传递到客户端

时间:2015-06-10 08:07:27

标签: javascript node.js express pug

我正在尝试将一个对象从我的端点传递给Jade,但它一直在给我Uncaught SyntaxError:Stat上的意外标识符!有谁可以帮助我吗。这是我的代码:

app.get('/stats', function (req, res, next) {

    var stats ={
        'm0t20': {a:0,b:0,c:0,d:0},
        'm20t30': {a:0,b:0,c:0,d:0},
    };
   res.render('chart',{'stat':stats});
 }

在我的玉中,我无法获得stat的价值:

 script(type='text/javascript').
        var stats= #{stat};

1 个答案:

答案 0 :(得分:3)

如果要从表达中插入对象,最简单,最干净的方法是序列化它们。 目前,一旦插值,你试图写这样的东西:

var stats = [Object object];

这不是有效的JavaScript语法:/ 因此,在服务器端,序列化您的对象:

 app.get(..., function (req, res) {
    var stats = { ... };
    res.render('chart', { stats: JSON.stringify(stats) });
 });

而且,在客户端,只需使用序列化对象;您需要使用!而不是#来阻止jade像引号一样转义字符。

script.
    var stats = !{stats};
    alert(stats.myProp);

请注意,您正在将直接JavaScript代码注入您的网页。
如果序列化对象可以包含任何用户输入,请不要这样做