Je crée une application simple pour apprendre comment fonctionne node.js. En utilisant jquery et ajax, je passe un objet JSON à une méthode node.js. Le problème est que je ne sais pas comment obtenir les données JSON spécifiques dans la méthode node.js.

Code côté client:

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

    }

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

Merci d'avance.

0
DCruz22 5 mars 2016 à 09:10

3 réponses

Meilleure réponse

Vous pouvez utiliser le bodyParser middleware

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

Puis req.body contiendra l'objet JSON analysé:

app.post('/saveCar', function(req, res) {
    console.log(req.body);
});

Il n'y a qu'un seul problème. Vous devez définir l'en-tête Content-Type approprié lors de l'appel AJAX afin que l'analyseur de corps sache qu'il doit traiter JSON:

.ajax({
    type: 'POST',
    data: car,
    url: '/saveCar',
    contentType: 'application/json',
    dataType: 'JSON'
}).done(function( response ) {
    console.log(response);
});
3
DCruz22 5 mars 2016 à 06:55

Utilisez le module BodyParser.

Serveur:

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

Itinéraire:

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);
});
0
7urkm3n 5 mars 2016 à 06:58

Répondez pour comprendre le flux.

Les données JSON publiées par le client sont reçues dans req.body.

req.body contient des paires clé-valeur de données soumises dans le corps de la demande. Par défaut, il n'est pas défini et est rempli lorsque vous utilisez un middleware d'analyse corporelle tel que body-parser .

En utilisant un middleware d'analyse corporelle pour remplir req.body comme:

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

magic req.body va gérer les données JSON, envoyées par le client:

app.post('/save-car', function(req, res) {
    //hey! i am req.body and i have all data :)
});
1
Zeeshan Hassan Memon 5 mars 2016 à 06:48