4 votes

Le serveur NodeJS change le nom de l'objet JSON

J'envoie une requête POST à mon serveur via $.ajax et mon objet JSON rencontre un problème sur le serveur.

Code côté client :

var someArr = ["ayush","hehehe"];
        var data = {
            "profileType": "",
            "location": someArr,
            "centerPref": 0,
            "subjects": []
        };
        console.log(data.location);
        $.ajax({
            type: "POST",
            url: "/upload/furtherDetails",
            data: data    
        })

Mais sur la console qui enregistre le fichier req.body, j'obtiens ce résultat

enter image description here

1voto

transporter_room_3 Points 1071

C'est parce que vos données json sont urlencodées. Pour qu'elles soient analysées en un objet json riche, vous devez utiliser une bibliothèque spéciale.

Voici comment le faire avec le paquetage body-parser :

const bodyParser = require('body-parser');
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: true }));

La différence que cela fait :

-- with: bodyParser.urlencoded({ extended: true }) --

{ profileType: '',
  location: [ 'ayush', 'hehehe' ],
  centerPref: '0' }

-- with: bodyParser.urlencoded({ extended: false }) -- 

{ profileType: '',
  'location[]': [ 'ayush', 'hehehe' ],
  centerPref: '0' }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X