我是node.js的新手,这可能很愚蠢,但实际上并没有找到实现这一目标的正确方法。在这里,我尝试从node.js res.send()方法发送mysql结果,在这里在下面添加代码。
router.post('/get_doc_msgs', (req, res)=>{
var d_msg = "SELECT * FROM msgs WHERE d_id = ?";
var d_msgs = [req.body.doc_id_msgs];
db.query(d_msg, d_msgs, (err,rows) => {
if(err){
console.log('error ', err);
}
else{
res.send(rows)
}
});
})
这是我的功能,用于将数据获取到呈现的ejs文件中。
function getmsgs(){
$.ajax({
type:'POST',
url: '/get_doc_msgs',
data: {
doc_id_msgs : $('#doct_id').val();
},
success: function(data){
$('#msg_q').html(data);
}
})
}
提前谢谢您的帮助和建议。
答案 0 :(得分:1)
这是如何工作的完整示例,我添加了服务器和客户端代码。
如果您运行
node app.js
然后转到http://localhost:3000,您应该会看到示例的工作。
我认为的主要问题是您需要在Express中使用主体解析器,以便可以正确解析上传的数据。在这种情况下,我使用了JSON,如果需要,可以使用其他编码。
我对服务器代码所做的唯一更改实际上是添加了正文解析器。
在客户端,我设置了一个内容类型标题,并在上传的数据上使用了JSON.stringify()。
这不是一个愚蠢的问题,要使所有这些东西都变得好玩,需要一些练习和努力!
app.js
const mysql = require('mysql');
const express = require('express');
const app = express();
const router = app;
const port = 3000;
const bodyParser = require("body-parser");
// Add the credentials to access your database
var db = mysql.createConnection({
host : 'localhost',
user : '<user>', /* replace these with real values. */
password : '<pw>', /* replace these with real values. */
database : '<db>' /* replace these with real values. */
});
app.use(bodyParser.json());
app.use(express.static("./"));
router.post('/get_doc_msgs', (req, res)=>{
var d_msg = "SELECT * FROM msgs WHERE d_id = ?";
var d_msgs = [req.body.doc_id_msgs];
db.query(d_msg, d_msgs, (err,rows) => {
if(err){
console.log('error ', err);
} else {
res.send(rows)
}
});
})
app.listen(port);
index.html
<!DOCTYPE html>
<html>
<head>
<script
src="https://code.jquery.com/jquery-3.5.1.min.js"
integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0="
crossorigin="anonymous"></script>
</head>
<body style="padding:20px">
<label>Doc id:</label><input id="doct_id" value="1"/>
<h4>Response:</h4>
<p id="msg_q"></p>
<script>
function getmsgs() {
$.ajax({
type: 'POST',
url: '/get_doc_msgs',
contentType: "application/json",
data: JSON.stringify({
doc_id_msgs : $('#doct_id').val()
}),
dataType: "json",
success: function(data) {
for(row of data) {
$('#msg_q').append("<li>" + Object.values(row).join("\t") + "</li>");
}
}
})
}
console.log("Doc id:", $('#doct_id').val());
getmsgs();
</script>
</body>
</html>
答案 1 :(得分:0)
`getDocMessg = (req, res, next) => {
mess_id = req.body.doc_id_msgs
db.execute("SELECT* FROM msgs WHERE d_id = ?", [mess_id]).then((results) => {
res to render the page you want to send the data to
res.render('name of page', {
message : results[0]
})
})
}`
类似的事情应该可以完成您所需的工作,以使其适应您的网站结构,使用ejs,您可以调用可变消息并将其显示在页面上:)