使用node.js从服务器获取数据

我想通过get方法对ajax调用node.js,ajax调用的结果将显示在同一个html页面中,我称之为ajax函数

这是html代码:

<!DOCTYPE html> <html lang="en"> <head> <title>Sing-in Page</title> <link rel="stylesheet" href="css/style.css"> <script src="//code.jquery.com/jquery-1.10.2.js"></script> <script> $(function() { $("#myform").bind('ajax:complete', function() { // tasks to do alert('1'); }); }); </script> </head> <body> <form method="get" action="http://localhost:8080/Login" id="myform" class="login"> <p> <label for="login">Email:</label> <input type="text" name="login" id="login" value=""> </p> <p> <label for="password">Password:</label> <input type="password" name="password" id="password" value=""> </p> <p class="login-submit"> <button type="submit" class="login-button">Login</button> </p> <p class="forgot-password"><a href="index.html">Forgot your password?</a></p> </form> </body> </html> 

是我的node.js代码,我知道我需要写在res.endfunction的东西,但我现在不是什么..

 var express = require('express'); var app = express(); var fs = require("fs"); var mysql = require('mysql'); var pool = mysql.createPool({ host : 'XXXX', user : 'XXXX', password : 'XXXX', database : 'XXXX', }); app.use(express.bodyParser()); app.get('/Login', function(req, res) { pool.getConnection(function(err, connection) { var sql = 'select count(id) as ok from users where email=\''+req.body.login+'\' and password=\''+req.body.password+'\';'; console.log("query: "+sql); connection.query( sql, function(err, rows) { console.log(rows[0].ok); connection.end(); }); }); // what to write here that res.end() will return the result of console.log(rows[0].ok); res.end(); }); app.listen(8080, function() { console.log('Server running...'); }); 

我想从数据库中得到sql查询的结果

你几乎已经拥有了它 – 只需在closures连接后添加res.send()

 app.get('/Login', function(req, res) { pool.getConnection(function(err, connection) { var sql = 'select count(id) as ok from users where email=\''+req.body.login+'\' and password=\''+req.body.password+'\';'; console.log("query: "+sql); connection.query( sql, function(err, rows) { console.log(rows[0].ok); connection.end(); res.send(rows[0].ok); // you simply send your data after you're done your processing }); }); }); 

在客户端,您可以绑定成功事件

 $("#myform").bind('ajax:success', function(result) { alert(result); }); 

如果试图触发服务器上的数据事件,则必须将数据发送到服务器,也许使用Jquery的post方法,如下所示:

 var postSomething = function(){ $.post ( "http://127.0.0.1:3000/", {wooo:'wooo'}, function(data) { console.log(data); } ); } 

当'data'事件发生时,你应该在响应对象中写入一些数据:

 req.on('data', function(sock) { res.writeHead(200, {"Content-Type": "text/plain"}); res.end("Hello!!"); }); 

你可以使用这样的东西:

 app.get('/Login', function(req, res) { pool.getConnection(function(err, connection) { var sql = 'select count(id) as ok from users where email=\''+req.body.login+'\' and password=\''+req.body.password+'\';'; console.log("query: "+sql); connection.query( sql, function(err, rows) { console.log(rows[0].ok); connection.end(); var returnData = {}; returnData.message = rows[0].ok; return res.json(200, returnData); }); }); }); 

发送HTTP Get到服务器:

 $.get( "YOUR_URL_HERE/Login", function( data ) { alert( data ); }); 

要返回Json结果,可以这样做:

 app.get('/Login', function(req, res) { var result; pool.getConnection(function(err, connection) { var sql = 'select count(id) as ok from users where email=\''+req.body.login+'\' and password=\''+req.body.password+'\';'; console.log("query: "+sql); connection.query( sql, function(err, rows) { console.log(rows[0].ok); result = rows[0].ok; connection.end(); }); }); res.writeHead(200, { 'Content-Type': 'application/json' }); res.json({ status: result }) });