CNode

新手求教:render传递json到前端页面读取不了

问答
Bbismarch发布于11 年前最后回复11 年前9 回复9233 浏览0 收藏

代码如下:

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)

L
leapon#1·11 年前

object 传到前端需要转化一下 book|json|raw

L
leapon#2·11 年前

上面是swig的filter函数。ejs应该有对应的转换函数

B
bismarch#3·11 年前
引用 leapon上面是swig的filter函数。ejs应该有对应的转换函数

@leapon 我发现接到的是一个string "[object, object],......我就蒙了

L
leapon#4·11 年前
引用 bismarch@leapon 我发现接到的是一个string "[object, object],......我就蒙了

@bismarch 在 node 里你可以查一下,book 等对象是不是期待的值。

B
bismarch#5·11 年前

在传过来之前输出过是我想要的对象,并且在 body里面用 for输出可以得到想要的值,在 script 里面就不对了,这个 docs看着挺像 json的为什么用 isPrototypeOf(json)是 false 呢

L
leapon#6·11 年前
B
bismarch#7·11 年前

已经找到解决方案了,谢谢

B
bismarch#8·11 年前

@thesadboy 没错就是这样的

参与回复
登录后即可参与回复。登录