从服务器端(express.js,node.js)获取客户端的变量

4

服务器端:

app.get('/auth', function(req, res) {
    res.render('auth.jade', {
        variable: true
    });
});

如何从服务器端获取客户端的变量“variable”?
我尝试过以下方法:
alert(variable);
2个回答

7

在浏览器窗口中的客户端JavaScript应用程序中,无法直接获取服务器端变量。虽然它们支持相同的编程语言,但它们只是两个不同的运行时。

您的问题是关于客户端JavaScript如何与服务器端资源(例如/auth)通信。以下是一些选项:

在由Jade模板呈现的网页上提供脚本标记中的数据。例如:

html(lang="en")
  head
    title= pageTitle
  script(type='text/javascript').
    var generatedData = {variable:true}
body

然后您可以使用alert(generatedData)来获取它。请注意,数据必须是可序列化的数据,没有任何函数或引用。

通常人们使用 JSON,这意味着您需要编写一些客户端代码来与服务器端资源进行通信。例如在客户端使用 jQuery:

$.get('/auth').done(function(data){ alert(data); });

使用服务器端代码,通过 Express 响应对象自动发送 JSON 数据的方法如下:
app.get('/auth', function(req, res) {
    res.send({
        variable: true
    });
});

0

只有在 Jade 编译后,对象 {variable:true} 才能在 auth.jade 中使用。你可以将它添加到隐藏元素中,并使用客户端 JavaScript 读取它,或者更好地从 ajax 调用中获取它的 JSON。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接