【问题标题】:get data from server with node.js使用 node.js 从服务器获取数据
【发布时间】:2014-08-04 03:24:54
【问题描述】:

我想使用 get 方法对 node.js 进行 ajax 调用 ajax 调用的结果将显示在我调用 ajax 函数的同一个 html 页面中

这是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.end 函数中写一些东西,但我现在不知道..

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 查询的结果

【问题讨论】:

    标签: javascript ajax html node.js


    【解决方案1】:

    你几乎拥有它 - 只需在关闭连接后添加 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);
    });
    

    【讨论】:

    • 嗨,我使用发送功能后如何获取 html 端的数据?我的 jq myform 函数不会提醒我任何东西.. =(
    • 编辑回答您的问题 - 绑定 ajax:success 事件:)
    【解决方案2】:

    如果你想在服务端触发数据事件,你必须向服务端发送数据,可能使用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!!");
    });
    

    【讨论】:

    • $.post 向服务器发送 HTTP Post,但他的“/Login”函数正在等待 HTTP Get。我认为这是错误的,对吧?
    【解决方案3】:

    将 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 })
    });
    

    【讨论】:

      【解决方案4】:

      你可以这样使用:

      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);
              });
              });
      
      
      });
      

      【讨论】:

        猜你喜欢
        • 2016-06-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-09-20
        • 1970-01-01
        • 2012-08-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多