【问题标题】:Passing a variable from .ejs file back to express.js将 .ejs 文件中的变量传递回 express.js
【发布时间】:2017-08-17 10:44:48
【问题描述】:
我正在使用带有 express.js 框架的 node.js 和视图引擎设置为“ejs”的项目。该项目的功能是:
1. 从用户那里获得输入。
2. 使用输入将请求发送到网站的 API。
3. 打印来自该 API 的特定数据(包括稍后使用的 ID)。
4. 当用户点击包含上述数据的列表中的项目(即“a”标签)时 - 使用该项目的 ID 向同一网站发送另一个请求以获取有关该项目的更详细信息。
我被困在第 4 步。问题是:
当用户点击该项目时,如何从 .ejs 文件发送此 id 以在 node.js 中发布请求?
另一种方法很简单: response.render("view name", {nodeJsVar: ejsVar});但是怎么传回去呢?
感谢您的帮助!
【问题讨论】:
标签:
node.js
api
express
ejs
【解决方案1】:
首先,您不能“从 .ejs 文件”发送任何数据 - 您可以做的是从浏览器发送它,该浏览器具有呈现的 HTML(可能还有 JavaScript)和不是 EJS。
您可以使用一些客户端 JavaScript 来做到这一点,在这种情况下,您可以为所欲为。
如果您使用标准的<a href="..."> 链接,您可以通过将变量的值作为路由参数或查询参数嵌入到 URL 中来实现。
如果您使用表单和按钮,您可以在表单中放置隐藏的输入。
如果您使用 AJAX,您可以将其放在请求的任何部分。
只是为了确保您知道什么是什么,因为它可能会造成混淆 - 这里 X 是一个路径参数:
http://localhost/something/X
这里X是一个查询参数:
http://localhost/something?x=X
【解决方案2】:
试试这个(假设你使用 jQuery):
$.ajax({
url: '/routename_to_handle_id',
type: 'POST',
data: { id: id }
}).done(function(response){
//callback to handle if it's successful
})