从 NodeJS 中的 AJAX 请求中获取数据并存储在 DB 中
Posted
技术标签:
【中文标题】从 NodeJS 中的 AJAX 请求中获取数据并存储在 DB 中【英文标题】:Get data from AJAX request in NodeJS and store in DB 【发布时间】:2016-04-27 11:04:52 【问题描述】:我在 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? 谢谢。
【问题讨论】:
database : "",
没有选择数据库。
对不起,我忘了在上面的例子中包含它,但这不是问题。谢谢
【参考方案1】:
请尝试req.params.city
获取输入数据。它适用于我的项目。但是,req.body
我用于获取通过 POST 方法发送的数据。
app.get - 使用 req.params app.post - 使用 req.body
【讨论】:
我已更改为 req.params,但我仍然无法从客户端获取数据:/ city: undefined, country: undefined 尝试:app.get("/cities/:city/:country", function() console.log(req.params.city); );并发送网址,例如:localhost:3000/cities/london/britain 我想将所有数据从 JSON(不是特定字段,如 )存储到 db,我对 NodeJS 中的 API 形式有点困惑。您对该解决方案有什么建议吗?谢谢。 我建议使用:- var bodyParser = require('body-parser'); app.use(bodyParser.json()); app.post("/cities", function() console.log(req.body); );这将在帖子中发送请求时起作用(x-www-form-urlencode)【参考方案2】:而不是做:
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);
);
【讨论】:
当我尝试访问 api(城市)时,出现 TypeError: Cannot read property 'city' of undefined error :/ 这是数据对象的第一个属性。以上是关于从 NodeJS 中的 AJAX 请求中获取数据并存储在 DB 中的主要内容,如果未能解决你的问题,请参考以下文章
如何从MVC5中的jquery ajax调用中获取部分视图和JSON数据?
如何从烧瓶中的“ImmutableMultiDict”获取数据
用Nodejs+Express搭建web,nodejs路由和Ajax传数据并返回状态,nodejs+mysql通过ajax获取数据并写入数据库