访问客户端js中服务器端js发送的数组

时间:2016-01-11 16:34:06

标签: javascript express nunjucks

我正在使用nunjucks模板学习expressjs,mongodb。数组通过以下方式从服务器发送到html:

poll.find().sort({'date': -1}).toArray(function(err,docs){
        res.render("home",{polls:docs});
    });

变量polls是一个对象数组。我能够在html视图中成功访问polls数组,但我不知道在客户端js文件中访问它以使用数组内部的数据绘制图表点。

如果我使用<input type='hidden value='{{ polls }}'>,它将转换为字符串,并且无法在客户端js中访问其中的数组,对象。可以做些什么?

2 个答案:

答案 0 :(得分:0)

我不知道nunjucks做了什么,但是express将所有非标量数据(=对象和数组)作为JSON-string发送。

只需使用

之类的东西
var body = JSON.parse(responseText);

在客户端上获取原始对象/数组。

答案 1 :(得分:0)

要使其正确可访问,您需要通过JSON.stringify输出民意调查,这会将您的javascript数组转换为json格式:JSON.stringify(polls)

所以,

<input type="hidden" value="{{ JSON.stringify(polls) }}" />

或者在javascript中访问它:

<script>
    var polls = "{{ JSON.stringify(polls) }}";
</script>

或者在服务器端执行此操作以使其更快(而不是客户端)会更好:

res.render("home", { 
  polls: JSON.stringify(docs)
});