Nodejs 将mysql数据库数据 查询出来现在到页面 怎么将数据返回来呢,请教大虾们。
Nodejs 将mysql数据库数据 查询出来现在到页面 怎么将数据返回来呢,请教大虾们。
新手学node. 用的是mySQL数据库 页面使用$.ajax请求 怎么将MySQL中查询的数据返回到$ajax来用呢。
当然可以!在Node.js中,你可以使用Express框架来创建一个Web服务器,并使用mysql
库来查询MySQL数据库。然后,你可以通过HTTP响应将查询结果返回给前端的Ajax请求。
以下是一个简单的示例代码:
- 首先安装必要的库:
npm install express mysql
- 创建一个Node.js服务器文件(例如
server.js
):
const express = require('express');
const mysql = require('mysql');
// 创建一个MySQL连接
const connection = mysql.createConnection({
host: 'localhost',
user: 'your_username',
password: 'your_password',
database: 'your_database'
});
connection.connect((err) => {
if (err) throw err;
console.log('Connected to MySQL database!');
});
const app = express();
const port = 3000;
app.get('/getData', (req, res) => {
// 执行SQL查询
const sql = 'SELECT * FROM your_table';
connection.query(sql, (err, results) => {
if (err) throw err;
// 返回查询结果给前端
res.json(results);
});
});
app.listen(port, () => {
console.log(`Server is running on http://localhost:${port}`);
});
- 在前端页面中使用jQuery进行Ajax请求:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Ajax Example</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
<button id="fetchData">Fetch Data from Database</button>
<script>
$(document).ready(function() {
$('#fetchData').click(function() {
$.ajax({
url: 'http://localhost:3000/getData',
method: 'GET',
success: function(data) {
console.log('Data:', data);
// 在这里处理返回的数据
},
error: function(error) {
console.error('Error:', error);
}
});
});
});
</script>
</body>
</html>
解释
-
服务器端:
- 使用
express
创建一个简单的Web服务器。 - 使用
mysql
库连接到MySQL数据库。 - 定义一个路由
/getData
,当接收到GET请求时,执行SQL查询并将结果作为JSON响应返回。
- 使用
-
客户端:
- 使用jQuery的
$.ajax
方法发送GET请求到服务器。 - 当请求成功时,将返回的数据打印到控制台。
- 使用jQuery的
这样,你就可以从MySQL数据库查询数据并通过Node.js服务器将其返回给前端的Ajax请求了。
请求函数 QueryAllBeautyGoods: function(){ mysqlClient.connect(); var selectSQLString = “SELECT * FROM beauty_table”; var res=null; var callbackfn = function(erro,results){ if(erro){ console.log(“数据库查询错误”+erro); mysqlClient.end(); return; } //成功查询 console.log(“数据库查询结果”); console.log(results); //结果能被正确打印出来 res = results; mysqlClient.end();
}
reqSelect(mysqlClient,selectSQLString,callbackfn);
}
function reqSelect (client,selectSQLString,callback){ client.query(selectSQLString,function(erro,results){ callback(erro,results); });
查询出来的result能看到。但是请求没有返回,最后返回502报错: cannot requeue handshake after invoking quit
不知道是什么问题 请教各位大侠帮忙
返回的是 res.write(result)
result 要是字符串类型。JSON 对象用 JSON.stringify()处理一下。
请求函数的代码贴完整点,这样看不出来
数据库查询函数: function QueryAllBeautyGoods(){ mysqlClient.connect(); var selectSQLString = “SELECT * FROM beauty_table”; var res=null; var callbackfn = function(erro,results){ if(erro){ console.log(“数据库查询错误”+erro); mysqlClient.end(); return; } //成功查询 console.log(“数据库查询结果”); console.log(results); //结果能被正确打印出来 res = results; mysqlClient.end();
}
reqSelect(mysqlClient,selectSQLString,callbackfn);
}
function reqSelect (client,selectSQLString,callback){ client.query(selectSQLString,function(erro,results){ callback(erro,results); });
前端js请求 $.ajax({ type:“POST”, url: QueryAllBeautyGoods, //通过route执行到数据库查询函书 complete:function(res){ console.log(res); ///经过一段时间等待 前端这里输出错误Object {readyState: 4, setRequestHeader: function, getAllResponseHeaders: function, getResponseHeader: function, overrideMimeType: function…}
}
});
}
前端提示502 后端打印了查询的result 但请求一直没返回给前端 ,输出了cannot enqueue handshake after invoking quit.
麻烦各位帮忙看看 多多感谢了!
要将MySQL数据库中的数据通过Node.js服务器返回给前端的Ajax请求,你需要创建一个API端点来处理数据库查询,并将结果发送回客户端。以下是一个简单的示例,包括后端的Node.js代码以及前端的jQuery Ajax请求。
后端 Node.js 示例
首先,确保你已经安装了必要的包:
npm install express mysql
然后创建一个简单的Express应用,用于连接MySQL数据库并返回查询数据:
const express = require('express');
const mysql = require('mysql');
// 创建数据库连接
const connection = mysql.createConnection({
host: 'localhost',
user: 'yourusername',
password: 'yourpassword',
database: 'yourdatabase'
});
connection.connect((err) => {
if (err) throw err;
console.log('Connected to MySQL database!');
});
const app = express();
app.use(express.json()); // 为了处理POST请求
// 创建API端点
app.get('/api/data', (req, res) => {
const query = 'SELECT * FROM your_table';
connection.query(query, (error, results) => {
if (error) throw error;
// 返回查询结果
res.json(results);
});
});
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server is running on port ${PORT}`);
});
前端 jQuery Ajax 请求 示例
确保你的页面中包含了jQuery库:
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
然后你可以通过jQuery发起一个Ajax请求来获取数据:
$(document).ready(function() {
$.ajax({
url: '/api/data', // 这是你的API端点
method: 'GET',
success: function(data) {
console.log('Data received:', data);
// 在这里处理接收到的数据
// 例如:将数据显示在HTML中
$('#data-container').html(JSON.stringify(data));
},
error: function(error) {
console.error('Error fetching data:', error);
}
});
});
解释
- 后端:我们创建了一个Express应用,它监听HTTP GET请求到
/api/data
路径。当请求到达时,它执行一个SQL查询并将结果以JSON格式返回。 - 前端:我们使用jQuery的
$.ajax
方法向服务器发出GET请求。一旦请求成功,服务器返回的数据会被传给success
函数,你可以在其中处理这些数据(如展示它们)。
这样,你就建立了一个基本的RESTful API,能够从数据库获取数据并通过Ajax传递给前端。