我正在使用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 举报,一经查实,本站将立刻删除。