微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Node.js JSON.stringify()导致“在输出 不能用Jquery解析

我正在使用Node.js(使用Express.js)将JSON数据对象从服务器传递到客户端视图。

当我将JSON对象直接渲染到视图时,我会按照预期的方式获取页面显示的JSON对象(此WORKS):

pageprovider.findAllTag( function(error,pages){
    res.send(pages);
})

而且我的输出看起来像这样(大得多,很多嵌套的obj)

{"green":{"title":"green","pagesContaining": ""}}

当我试图把它传递给我的玉视图像这样:

pageprovider.findAllTag( function(error,tagsJSONObj){
        //res.send(pages);

    pageprovider.findAll( function(error,pages){
        res.render('search_tags.jade',{ locals: {
            title: 'Search by Tags','pages': pages,tagsJSON: JSON.stringify(tagsJSONObj) //pass the tags data as a JSON obj
            }
        });
    }) //pageprovider.findAll
}) //pageprovider.findAllTag

问题
当我将’tagsJSON’传递给视图时,输出包括html实体:

var obj = jQuery.parseJSON( "{"name": 'value'}");

JQuery抛出一个错误,因为它不喜欢”’。我如何让Node给我正确的引用,或者让jQuery接受这种格式?

有什么想法吗?

解决方法

这是因为当你打电话

res.render('search_tags.jade',{ locals: {
        title: 'Search by Tags',tagsJSON: JSON.stringify(tagsJSONObj) //pass the tags data as a JSON obj
        }
    });

search_tags.jade是为了输出HTML,所以它编码你的引号。您应该使用不HTML转义的渲染器,或至少更改视图,以使您的参数不进行HTML编码

如果您不希望输出中的某些内容被转义,请在视图中使用!{tagsJSON}。但是,当输出JSON时,不需要查看。你可以拿你的对象,调用JSON.stringify。我不使用JADE,所以我不知道有没有办法创建可以调用JSON.stringify()的视图,但这是我在JSP,速度,ASP,PHP代码点火器(不是使用JSON.stringify,而是使用给定语言的JSON工具)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐