function.js 如何从 express 和 node js 访问会话变量
how to access session variables from express and nodes js in function.js
我能够设置和访问会话变量,如 req.session.t1 等,并且在服务器端一切正常。在客户端,我在前端安装了 jquery 并通过 jade 模板访问。
我在functions.js:
$(function(){
var t1 = req.session.t1;
$('.results').append(t1);
});
因此,当 page/jade 模板加载时,如果我使用常量或字符串,jquery 会按照概述附加数据,但如果我使用 req.session.x,则会话变量未定义或 session.x.
所以问题是,我怎样才能最好地通过 jQuery、会话变量进行操作?或者我是否需要保存到数据库并每次都将其拉出?我是新手,不确定如何在 node js 和 express 中执行此操作 jquery.
Node.js/express 运行 在 server.
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});
我在 this answer
找到了答案
我更改了适合我的情况的最佳答案,结果是
script(type='text/javascript').
var t1 = #{session.t1}
事实证明,Jade 模板可以使用 express 中的会话变量来创建页面,但是一旦创建并显示,它们就不再可用于前端 JavaScript 调用,但是如果您专门使用它们来创建javascript 变量,然后这些变量可用于前端 javascript,这就是您将其传递给 jquery 和 javascript 的方式。很酷吧?
我希望您了解您的会话状态在服务器上,而您的 jQuery 在浏览器中,它们是完全不同的计算机。浏览器上的网页中没有 req
对象。这是一个服务器端对象,仅在处理 Web 请求时存在,一旦网页已发送到浏览器并由浏览器处理后就不再存在。
所以,这就解释了为什么浏览器中没有 req
对象。
您可以通过多种方式使会话中的某些信息在浏览器中可用。
您可以使用模板系统在包含所需信息的网页中生成一些 Javascript 变量。然后,您的 jQuery 可以在您的网页中读取那些 Javascript 变量的值,并用它们做它想做的事。
您可以创建一个 ajax 调用,您可以在浏览器中从 jQuery 进行调用,以联系服务器并从用户会话中请求信息。
您可以将一些特定的会话信息(如用户名)设置到服务器的 cookie 中,然后可以从客户端的 jQuery 代码中读取该 cookie。
我能够设置和访问会话变量,如 req.session.t1 等,并且在服务器端一切正常。在客户端,我在前端安装了 jquery 并通过 jade 模板访问。
我在functions.js:
$(function(){
var t1 = req.session.t1;
$('.results').append(t1);
});
因此,当 page/jade 模板加载时,如果我使用常量或字符串,jquery 会按照概述附加数据,但如果我使用 req.session.x,则会话变量未定义或 session.x.
所以问题是,我怎样才能最好地通过 jQuery、会话变量进行操作?或者我是否需要保存到数据库并每次都将其拉出?我是新手,不确定如何在 node js 和 express 中执行此操作 jquery.
Node.js/express 运行 在 server.
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});
我在 this answer
找到了答案我更改了适合我的情况的最佳答案,结果是
script(type='text/javascript').
var t1 = #{session.t1}
事实证明,Jade 模板可以使用 express 中的会话变量来创建页面,但是一旦创建并显示,它们就不再可用于前端 JavaScript 调用,但是如果您专门使用它们来创建javascript 变量,然后这些变量可用于前端 javascript,这就是您将其传递给 jquery 和 javascript 的方式。很酷吧?
我希望您了解您的会话状态在服务器上,而您的 jQuery 在浏览器中,它们是完全不同的计算机。浏览器上的网页中没有 req
对象。这是一个服务器端对象,仅在处理 Web 请求时存在,一旦网页已发送到浏览器并由浏览器处理后就不再存在。
所以,这就解释了为什么浏览器中没有 req
对象。
您可以通过多种方式使会话中的某些信息在浏览器中可用。
您可以使用模板系统在包含所需信息的网页中生成一些 Javascript 变量。然后,您的 jQuery 可以在您的网页中读取那些 Javascript 变量的值,并用它们做它想做的事。
您可以创建一个 ajax 调用,您可以在浏览器中从 jQuery 进行调用,以联系服务器并从用户会话中请求信息。
您可以将一些特定的会话信息(如用户名)设置到服务器的 cookie 中,然后可以从客户端的 jQuery 代码中读取该 cookie。