我制作了一个简单的应用程序来学习node.js是如何工作的。使用jquery和ajax,我将一个JSON对象传递给一个node.js方法。问题是,我不知道如何在node.js方法中获取特定的JSON数据。
客户端代码:
$(document).ready(function(){
$('#guardarVehiculo').click(function(){
var car = JSON.stringify(agregarCarro());
$.ajax({
type: 'POST',
data: car,
url: '/saveCar',
dataType: 'JSON'
}).done(function( response ) {
console.log(response);
});
});
});
function addCar(){
var id = getById('id').value;
var brand = getById('brand').value;
var model = getById('model').value;
var transmission = getById('automatic').checked ? getById('automatico').value : getById('mechanic').value;
var comment = getById('comment').value;
var car = new Car(id, brand, model, transmission, comment);
return car;
}node.js代码:
var express = require('express');
var fs = require('fs');
var app = express();
app.get('/', function(req, res){
res.sendFile(__dirname + "/index.html");
});
app.post('/saveCar', function(req, res){
console.log(req);
});
var server = app.listen(8000, function(){
var host = server.address().address;
var port = server.address().port;
console.log('Server running at: ' + host + ':' + port);
});提前谢谢。
发布于 2016-03-05 06:21:31
您可以使用bodyParser中间件
var app = express();
var bodyParser = require("body-parser");
app.use(bodyParser.json());然后req.body将包含解析的JSON对象:
app.post('/saveCar', function(req, res) {
console.log(req.body);
});只有一个抓到你。在进行AJAX调用时,需要设置适当的Content-Type头,以便正文解析器知道它应该处理JSON:
.ajax({
type: 'POST',
data: car,
url: '/saveCar',
contentType: 'application/json',
dataType: 'JSON'
}).done(function( response ) {
console.log(response);
});发布于 2016-03-05 06:48:31
回答以理解流程。
从客户端发布的JSON数据在req.body中接收。
req.body包含在请求体中提交的数据的键值对。默认情况下,它是未定义的,当您使用诸如体解析器之类的身体解析中间件时,它将被填充。
使用身体解析中间件将req.body填充为:
var app = express();
var bodyParser = require("body-parser");
app.use(bodyParser.json());magic req.body将服务器端发送的JSON数据:
app.post('/save-car', function(req, res) {
//hey! i am req.body and i have all data :)
});发布于 2016-03-05 06:58:47
使用BodyParser模块。
服务器:
var bodyParser = require("body-parser");
app.use(bodyParser.json());路线:
cars{
brand: "Tesla",
model: "S-sport",
color: "white"
}
app.post('/saveCar', function (req, res) {
console.log(req.body);
//to response back as Json.
res.json(cars);
});https://stackoverflow.com/questions/35810771
复制相似问题