1

我正在通过 res.render 和 Express 在 ajax 调用上渲染 Jade 模板。问题是我想将一些 JSON 变量或 Javascript 对象与 HTML 一起传回。

这是否可能以一种优雅的方式或根本没有?我知道我可以将脚本标记与 HTML 一起传递,但我不确定如何直接在“数据”响应中访问这些值。

这里的例子:

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

通常在 ajax 调用的这个模板的 res.render() 中你会得到

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

全部采用 HTML 格式。

如何访问回调中的 HTML 节点之一?理想情况下使用 jQuery 选择器,例如 $('h1 li')。我需要访问回叫中的号码,但它似乎没有抓住它。我正在考虑监听器或添加延迟,或者我需要将它分配给一个字符串并将其解析出来。

4

1 回答 1

1

不完全确定我理解这个问题。但是,通过 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 问题。

于 2012-05-08T08:31:25.027 回答