新手求教:render传递json到前端页面读取不了
发布于 9 年前 作者 bismarch 8609 次浏览 最后一次编辑是 8 年前 来自 问答

代码如下:

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 没错就是这样的

回到顶部