Nodejs 将mysql数据库数据 查询出来现在到页面 怎么将数据返回来呢,请教大虾们。

Nodejs 将mysql数据库数据 查询出来现在到页面 怎么将数据返回来呢,请教大虾们。

新手学node. 用的是mySQL数据库 页面使用$.ajax请求 怎么将MySQL中查询的数据返回到$ajax来用呢。

6 回复

当然可以!在Node.js中,你可以使用Express框架来创建一个Web服务器,并使用mysql库来查询MySQL数据库。然后,你可以通过HTTP响应将查询结果返回给前端的Ajax请求。

以下是一个简单的示例代码:

  1. 首先安装必要的库:
npm install express mysql
  1. 创建一个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}`);
});
  1. 在前端页面中使用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>

解释

  1. 服务器端

    • 使用express创建一个简单的Web服务器。
    • 使用mysql库连接到MySQL数据库。
    • 定义一个路由/getData,当接收到GET请求时,执行SQL查询并将结果作为JSON响应返回。
  2. 客户端

    • 使用jQuery的$.ajax方法发送GET请求到服务器。
    • 当请求成功时,将返回的数据打印到控制台。

这样,你就可以从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);
    }
  });
});

解释

  1. 后端:我们创建了一个Express应用,它监听HTTP GET请求到/api/data路径。当请求到达时,它执行一个SQL查询并将结果以JSON格式返回。
  2. 前端:我们使用jQuery的$.ajax方法向服务器发出GET请求。一旦请求成功,服务器返回的数据会被传给success函数,你可以在其中处理这些数据(如展示它们)。

这样,你就建立了一个基本的RESTful API,能够从数据库获取数据并通过Ajax传递给前端。

回到顶部