通过AJAX呈现Jade模板并尝试传递/访问与HTML分开的数据

我正在使用Express通过res.render在ajax调用上呈现Jade模板。 问题是我想回传一些JSONvariables或JavaScript对象与HTML。

这是可能的一个优雅的方式或所有? 我知道我可以传递一个脚本标记与HTML,但我不知道如何可以直接在'数据'响应中访问这些值。

示例:

- var someNumber = 89 h1 Hello World li #{someNumber} 

通常在ajax调用的这个模板的res.render()中,你会回来的

 <h1> Hello Wolrd </h1> <li> 89 </li> 

全部采用HTML格式。

如何访问callback中的HTML节点之一? 理想情况下,使用jQueryselect器,如$('h1 li')。 我需要访问回拨号码,但它似乎并没有抓住它。 我正在想听者或增加一个延迟,也许我需要分配给一个string,并parsing出来。

不完全确定我明白这个问题。 但是,要通过Jade将JSON直接传递给浏览器。 在你的路线逻辑,你需要像这样的东西:

  res.render "test", title: "Test" debugJson: { 'Read Folder Result' : result, 'HTTP' : { 'Req URL' : req.url, 'Req Query' : req.query, 'Req User' : req.user, 'Req Headers' : req.headers, 'Req' : req, 'Res' : res } } 

(对不起,这是在CoffeeScript而不是JS)

在你的Jade模板中,你需要像(在脚本中)那样:

 var myJson = !{JSON.stringify(debugJson)}; 

这将把JSON直接传递给脚本。 如果你想要它直接进入DOM,如下所示:

 #debug !{JSON.stringify(debugJson)} 

这将转储到一个div。

如果你只是想在Jade模板中处理它,你可以简单地在Jade中使用一个循环。 看到这个以前的StackOverflow问题如何做到这一点。