从NodeJS中的AJAX请求获取数据并存储在DB中

时间:2016-01-21 09:26:21

标签: jquery mysql ajax node.js body-parser

我在NodeJS中从客户端获取数据时遇到问题。

在客户端,我已准备好JSON数据,您可以在codepen

中看到

在服务器端,我正试图从客户端获取这些数据:

var express = require('express');
var mysql = require('mysql');

var app = express();

app.use('/', express.static('../client/app'));
app.use('/bower_components', express.static('../client/bower_components/'));

var server = require('http').createServer(app);

var bodyParser = require('body-parser');
app.jsonParser = bodyParser.json();
app.urlencodedParser = bodyParser.urlencoded({ extended: true });

//mysql connection setup
var connection = mysql.createConnection({
    host : "localhost",
    port: "3306",
    user : "root",
    password : "",
    database : "db",
    multipleStatements: true
});

app.get("/cities", function(req, res) {

    console.log(res.body); //I'm getting nothing

    var data= {
        city: req.body.city,
        country: req.body.country
    };

    var query = connection.query('INSERT INTO table SET ?', data, function(err, res) {
        if (err) {
            console.log(err);
        } else {
            console.log('success');    
        }
    });
    console.log(res); 
});

server.listen(3000, function () {
    'use strict';
});

我做错了什么?有没有办法在ST中调试NodeJS? 感谢。

2 个答案:

答案 0 :(得分:1)

而不是:

console.log(res.body); //I'm getting nothing

我认为您必须将回复发送为res.send('success')。或者您可以尝试再次发送已发布的值以进行测试:

res.send(data);

喜欢:

var query = connection.query('INSERT INTO table SET ?', data, function(err, res) {
    if (err) {
        console.log(err);
    } else {
        console.log('success');  
        res.send(res.insertId);  
    }
});

答案 1 :(得分:1)

请尝试使用此req.params.city来获取输入数据。它适用于我的项目。但是,req.body我用于获取通过POST方法发送的数据。

  

app.get - 使用req.params   app.post - 使用req.body