新手求教:render传递json到前端页面读取不了
代码如下:
db.collection('tblKSection', function (err, collection) {
if (err) {
console.log(err);
} else {
collection.find({}, {_id: 0}).toArray(function (err, docs) {
section = docs;
var timer = setInterval(function () {
if (book && section && knowledge && chapter) {
res.render('addresource', {
knowledge: knowledge,
book: book,
chapter: chapter,
section: section
});
clearInterval(timer);
}
}, 200);
});
}
});
addresource.ejs
<script>
var book = "<%= book %>";
var knowledge = "<%= knowledge %>";
var chapter = "<%= chapter %>";
var section = "<%= section %>";
alert(book);
</script>
输出结果为: [object,object][object,object][object,object] 求指导!!
8 回复
object 传到前端需要转化一下 book|json|raw
上面是swig的filter函数。ejs应该有对应的转换函数
@leapon 我发现接到的是一个string "[object, object],…我就蒙了
@bismarch 在 node 里你可以查一下,book 等对象是不是期待的值。
在传过来之前输出过是我想要的对象,并且在 body里面用 for输出可以得到想要的值,在 script 里面就不对了,这个 docs看着挺像 json的为什么用 isPrototypeOf(json)是 false 呢
@bismarch ejs 我不是很熟。你可以考虑在node端把对象展开成JSON string,传到前端再用JSON parse回对象。
已经找到解决方案了,谢谢
@thesadboy 没错就是这样的