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

时间:2014-04-12 13:43:11

标签: javascript node.js express

服务器端:

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

如何从服务器端在客户端获取变量'variable'?

我试过了:

alert(variable);

2 个答案:

答案 0 :(得分:4)

您无法直接在浏览器窗口中的客户端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); });

使用服务器端代码,它通过快速响应对象自动发送JSON数据:

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

答案 1 :(得分:-1)

当jade编译时,对象{variable:true}只能在auth.jade中使用。您可以将它添加到隐藏元素并使用客户端javascript读取它,或者更好,从ajax调用中将其作为json。