2016-03-05 2 views
0

Im, создавая простую программу, чтобы узнать, как работает node.js. Используя jquery и ajax, я передаю объект JSON методу node.js. Проблема в том, что я не знаю, как получить конкретные данные JSON в методе node.js.Получение объекта JSON с использованием node.js

код на стороне клиента:

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

Спасибо заранее.

+1

Если вы собираетесь POST данные, вы, вероятно, будете хотеть BodyParser, что делает это для вас, в противном случае GET данные легко доступны в 'req.query' – adeneo

+0

Спасибо за совет, теперь я знаю, что использовать в каждом случае. – DCruz22

ответ

3

Вы можете использовать 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); 
}); 

Там только один глюк. Вы должны установить правильный Content-Type заголовок при выполнении вызова AJAX, так что парсер тело знает, что он должен обрабатывать JSON:

.ajax({ 
    type: 'POST', 
    data: car, 
    url: '/saveCar', 
    contentType: 'application/json', 
    dataType: 'JSON' 
}).done(function(response) { 
    console.log(response); 
}); 
+0

Я точно искал это. Большое спасибо! – DCruz22

1

Ответ понять поток.

JSON данные, отправленные с клиента, получены в req.body.

req.body содержит пары данных с ключом, представленные в теле запроса. По умолчанию он не определен и заполняется, когда вы используете промежуточное ПО для разбора тела, например body-parser.

с использованием объемно-синтаксического анализа промежуточного уровня для заполнения req.body как:

var app = express(); 
var bodyParser = require("body-parser"); 
app.use(bodyParser.json()); 

req.body волшебной сервер будет JSON данные, отправленные клиентом:

app.post('/save-car', function(req, res) { 
    //hey! i am req.body and i have all data :) 
}); 
+0

Спасибо за объяснение! – DCruz22

0

Используйте 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); 
}); 
Смежные вопросы