如何从function.js中的express和nodes js访问会话变量

时间:2016-07-23 16:23:33

标签: jquery node.js session-variables

我可以设置和访问会话变量,如req.session.t1等,所有这些都可以在服务器端正常工作。在客户端,我在前端安装了jquery,并通过jade模板访问。

我在functions.js:

$(function(){          

    var t1 = req.session.t1;      

    $('.results').append(t1); 

});         

因此,当页面/ jade模板加载时,如果我使用常量或字符串,jquery会按照概述附加数据,但如果我使用req.session.x或session.x,会话变量是未定义的。

所以问题是,我怎样才能最好地通过jQuery,会话变量进行操作?或者我是否需要保存到DB并每次都将其拉出来?我是新手,不知道如何在节点js和express和jquery中这样做。

3 个答案:

答案 0 :(得分:2)

Node.js / express在服务器上运行。

jQuery在客户端上运行。

唯一能分享的是您发送给客户的任何内容。

如果您希望变量在客户端可访问,则需要在响应中发送它。

如果您重新提供服务器JSON,只需添加一个字段。

res.send({t1: req.session.t1}); // (node.js side)

如果您要输出模板,可以将其写入HTML标记,也可以直接写入脚本标记。

玉的例子:

script. // .jade file
  var t1 = "#{t1}"

在服务器中:

res.render('template.jade', {t1: req.session.t1});

答案 1 :(得分:1)

我希望你明白你的会话状态是在服务器上,你的jQuery在浏览器中,那些是完全不同的计算机。浏览器的网页中没有req个对象。这是一个服务器端对象,仅在Web请求被处理时才存在,并且一旦网页被发送到浏览器并且浏览器正在处理它就不再存在。

因此,这解释了为什么浏览器中没有req对象。

您可以通过多种方式在浏览器中提供会话中的某些信息。

  1. 您可以使用模板系统在网页中生成包含所需信息的一些Javascript变量。然后,您的jQuery可以在您的网页中读取这些Javascript变量的值,并随意执行它们。

  2. 您可以在浏览器中创建一个可以通过jQuery创建的ajax调用,以联系服务器并从用户会话中请求信息。

  3. 您可以通过服务器将一些特定的会话信息(如用户名)设置为cookie,然后可以从客户端的jQuery代码中读取该cookie。

答案 2 :(得分:-2)

我在this answer

找到答案

我根据自己的情况更改了最佳答案,而且

script(type='text/javascript').
    var t1 = #{session.t1}

事实证明,Jade模板可以使用来自express的会话变量来创建页面,但是一旦创建和显示,它们就不再可用于前端JavaScript调用,但如果你专门使用它们来创建javascript变量,那么那些是可用于前端javascript,这就是你如何将它传递给你的jquery和javascript。很酷?