我正在使用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中访问其中的数组,对象。可以做些什么?
答案 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)
});