gpt4 book ai didi

javascript - 将对象数组从 EJS 模板传递到 Javascript 函数?

转载 作者:行者123 更新时间:2023-12-03 03:40:02 25 4
gpt4 key购买 nike

我有一个基本的 Node.js 应用程序,当用户点击某个路由时,会从该路由的数据库中检索大量记录,并将其作为数组传递到我的 EJS 模板。

这工作正常,但是,在 EJS 模板上,我有一个按钮,它调用 Javascript 函数来随机播放该数组。如何将此数组作为参数从 EJS 模板发送到 Javascript 函数?通常的 <% %> 在这种情况下似乎不起作用。

我将数组传递给模板的代码如下所示:

router.get("/home", middleware.isLoggedIn, function(req, res) {
Bean.find({ "userid": req.user._id }, function(err, beans) {
if (err) {
console.log(err);
} else {
res.render("home", { path: req.path, beans: beans });
}
});
});

在我的模板中,我可以访问 beans 变量并进行循环,但是,我无法将其作为参数传递,如下所示:

<a href="javascript:void(0);" class="btn btn-lg btn-yellow" role="button" onclick="match_engine(<% beans %>);">Match</a>  

以上内容将在我的编辑器中给出“预期表达式”错误,并且 beans 数组将在我的 Javascript 代码中未定义。我做错了什么?

此外,我可以从 Javascript 文件返回该数组并将其用作 EJS 中的新变量吗?

提前致谢!

编辑:

在我的 EJS 模板上,我有上面的按钮和一个表格:

<table class="table table-striped"> 
<thead>
<tr>
<th>Full Name</th>
<th>Email</th>
<th>Position</th>
</tr>
</thead>
<tbody>
<% beans.forEach(function(bean) { %>
<tr>
<td><%= bean.fname + " " + bean.lname %></td>
<td><%= bean.username %></td>
<td><%= bean.position %></td>
</tr>
<% }); %>
</tbody>
</table>

我的目标是在加载页面时填充此表(这有效),然后当用户单击按钮时,对象的 beans 数组将被打乱并重新显示在表中。

最佳答案

<% %>代表不会在 HTML 代码中显示的 javascript 输入,例如 <% for (var i = 0; i < arr.length; i++){ %><%= %>当您希望以 HTML 形式显示时使用。在你的情况下,它将是 <%= beans %>而不是<% beans %> .

希望对你有帮助!

关于javascript - 将对象数组从 EJS 模板传递到 Javascript 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45666403/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com