【发布时间】:2020-01-22 09:38:15
【问题描述】:
我想将我的数据从服务器传输到客户端 JS 文件,但现在浏览器在其主屏幕上显示数据,就像我们使用 innerHTML 属性时一样:
我检查了一堆 express.js 教程,但似乎没有办法将数据发送(从技术上讲)到客户端 js 文件。
这是我正在寻找的图表:
[打开网页] -> [(在服务器中)从数据库中获取数据] -> [将数据发送到客户端 js 文件] -> // 在客户端做更多的事情-侧面
有什么技巧可以解决这个问题吗?
这是我的代码:
// Makes display the client-side html, temporary disabled.
// app.use(express.static('client'));
// Queries
const QUERIES = {
prev: 'SELECT * FROM en.prevstore',
curr: 'SELECT * FROM en.currstore',
next: 'SELECT * FROM en.nextstore',
samp: 'SELECT * FROM en.sample'
}
// Create connection
const db = mysql.createConnection({
host: 'localhost',
user: 'root',
password: 'password123',
database: 'en'
});
// Router
app.use('/', (req, res) => {
db.query(QUERIES.samp, (err, results) => {
let ternary = err ? console.error(err) : res.json(results);
})
})
客户端 HTML(来自评论的请求)
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title></title>
</head>
<body>
<div class="quotes">
should be filled as quotes of data from database
</div>
<div class="color">
should be filled as color of data from database
</div>
<script type="text/javascript" src="./index.js"></script>
</body>
</html>
客户端 JS:
function getWord() {
fetch('http://localhost:4000')
.then(res => res.json())
.then(({data}) => console.log(data))
}
getWord() // I know it won't work but tried for just in case.
【问题讨论】:
-
首先,你必须调用
res.end()来关闭一个请求(如果你不使用res.json(...))。你能展示你的客户端代码吗?您想在第一个响应中注入数据(返回 html 和 js)还是公开返回 JSON 的 API 端点? -
@Kornflexx 抱歉,我是后端的新手。我从来没有听说过这两种方式,所以我不能告诉你我到底想要什么。 (我在帖子中添加了 HTML 和 JS。)
-
您正在使用端点:在客户端和服务器之间实现数据传输的非常常见的方式。
标签: javascript mysql database express