【发布时间】:2017-03-08 14:46:09
【问题描述】:
我正在使用 NodeJS 进行项目,我正在尝试使用 AJAX 从我的 MySQL 数据库中读取数据,然后在 HTML 表中显示数据库表行。
我认为从数据库中取出数据后如何处理/存储数据存在问题。
这是我的数据库的结构(当然是完全虚构的数据),以及到目前为止的代码:
如果我使用 console.log(serverData);在我看来,我的数据应该位于某种嵌套数组或某种结构中,以便我识别正在访问的数组中的值。
server.js
var http = require('http');
var fs = require('fs');
var mysql = require('mysql');
var url = require('url');
var mime = require('mime');
var config = JSON.parse(fs.readFileSync('config.json'));
var host = config.host;
var port = config.port;
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : 'root',
database : 'innovation_one'
});
function connectToDb(){
connection.connect(function(err){
if (err){
console.log('error: ' + err.stack);
return;
}
return console.log('Connected established!');
});
}
var server = http.createServer(function(request,response){
var parsed = url.parse(request.url);
var mimetypeLookup = mime.lookup(request.url);
if(request.method == "POST") {
// POST
} else if (request.method == "GET") {
// GET
if (request.url == '/get-servers/'){
connectToDb();
connection.query('SELECT * FROM servers', function(err,rows,fields) {
if (err) {
console.log(err);
return
}
var data = [];
for( i = 0 ; i < rows.length ; i++){
data.push(rows[i].name);
data.push(rows[i].client);
data.push(rows[i].type);
data.push(rows[i].host);
data.push(rows[i].ssh);
data.push(rows[i].mysql);
}
response.writeHead(200, {'Content-Type': 'text/html'});
response.end(JSON.stringify(data,fields));
});
}
}
}).listen(port, host);
console.log('Server running at http://127.0.0.1:4114/');
index.html
<!DOCTYPE html>
<head>
<title>Home | Innovation One</title>
<link type="text/css" rel="stylesheet" href="css/styles.css" />
</head>
<body>
<h1>Dev sheet dashboard</h1>
<button id="getServers">Get servers</button>
<table id="servers">
<thead>
<tr>
<th width="150">Server name</th>
<th width="150">Client</th>
<th width="150">Type</th>
<th width="150">Host</th>
<th width="150">SSH</th>
<th width="150">MySQL</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
<div class="log"></div>
<script src="https://code.jquery.com/jquery-2.2.0.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
// Code here
$('button#getServers').on('click',function(){
var jqxhr = $.get('/get-servers/', function(data,fields) {
var serverData = JSON.parse(data);
console.log(serverData);
var rows = serverData.length / (fields.length - 1);
for (i=0 ; i < rows ; i++){
$('#servers tbody').append('<tr> <td>'+serverData[i]+'</td><td>'+serverData[i]+'</td> <td>'+serverData[i]+'</td><td>'+serverData[i]+'</td><td>'+serverData[i]+'</td><td>'+serverData[i]+'</td></tr>');
}
});
});
});
</script>
<script type="text/javascript" src="js/script.js" />
</body>
【问题讨论】:
标签: javascript mysql ajax node.js loops