使用 ejs 组件将数据从 js 发送到 html

Posted

技术标签:

【中文标题】使用 ejs 组件将数据从 js 发送到 html【英文标题】:Sending data from js to html with ejs components 【发布时间】:2016-07-20 02:18:03 【问题描述】:

我刚刚开始学习 JS 和 node.js。我一直在尝试通过 ejs 组件将数据从 mysql 中的数据库发送到 html 进行一些练习。我尝试使用 ejs.render(data, data: something_from_DB);发送获取的信息(something_from_DB),由“数据”标识。然后我在html的ejs代码中使用了标识符“data”,但它会抱怨html文件中没有定义数据。

这是js代码。

var mysql = require('mysql');
var fs = require('fs');
var http = require('http');
var express = require('express');
var ejs = require('ejs');
var app = express();
app.use(app.router);

var client = mysql.createConnection(
    user: 'username',
    password: 'password',
    database: 'database_name'
);

app.get('/', function(req, res)

    fs.readFile('list.html', 'utf8', function(error, data)
        client.query('SELECT * FROM test_table', function(error, results)
            console.log(results);
            res.send(ejs.render(data), data: results);
        );
    );
);

这是来自 list.html 的部分

<% data.forEach(function(item, index) %>
<tr>
    <td><%= item.id %></td>
    <td><%= item.name %></td>
    <td><%= item.phone_no %></td>
</tr>
<% ); %>

当我打印结果时,我得到:

[ RowDataPacket  id: 1, name: 'PETER', phone_no: '0100000000'  ]

看起来不错。我希望通过“数据”传递它,但我认为这不会发生。

如果我使用了断章取义的词,请纠正我。

【问题讨论】:

【参考方案1】:

我认为这是一个简单的错误。试试这个。

      res.render('ejs file name',data: results,);

【讨论】:

这不提供问题的答案,应该是评论。请参阅When should I comment?。一旦你有足够的reputation,你就可以在任何帖子上comment;相反,provide answers that don't require clarification from the asker.

以上是关于使用 ejs 组件将数据从 js 发送到 html的主要内容,如果未能解决你的问题,请参考以下文章

从 API 获取数据,然后将其发送到 EJS 文件

从前端将数据发送回 node.js 服务器

Sails.js 将数据从部分控制器发送到部分视图

如何将数组从 js 打印到 ejs 模板?

将 html 标签作为 ejs 变量的值传递

Vue js将数据从api发送到新页面