Node.js JSON.stringify()在输出中引起“无法使用Jquery解析

【字号: 日期:2024-04-17浏览:16作者:雯心
(adsbygoogle = window.adsbygoogle || []).push({}); 如何解决Node.js JSON.stringify()在输出中引起“无法使用Jquery解析?

因为当你打电话时

res.render(’search_tags.jade’, { locals: {title: ’Search by Tags’,’pages’: pages,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,Velture,ASP,PHP和CodeIgniter中所做的(不使用JSON.stringify,而是使用了给定语言的JSON工具)

解决方法

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

当我将JSON对象直接呈现到视图时,我得到了预期显示在页面上的JSON对象(此工作):

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

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

{'green':{'title':'green','pagesContaining': ''}}

当我尝试将其传递给我的Jade View时,如下所示:

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接受这种格式?

有什么想法吗?

相关文章: