J'ai un serveur comme suit:
app.post('/', function(req, res, next) {
console.log(req);
res.json({ message: 'pppppppppppppssssssssssssss ' });
});
La demande est envoyée par un client en tant que:
$.ajax({
type: "POST",
url: self.serverURI,
data: JSON.stringify({ "a": "128", "b": "7" }),
dataType: 'json',
success: function (result) {
console.log(result);
},
error: function (xhr, ajaxOptions, thrownError) {
console.log(xhr);
}
});
jusqu'à présent, la connexion est bonne.
Mon problème est dans le serveur:
console.log(req);
où je veux lire les données que j'ai envoyées. Comment puis-je lire { "a": "128", "b": "7" }
à partir de req
?
Bien que vous ne le mentionniez pas, votre code a l'air d'avoir été écrit pour un environnement Express . Ma réponse est ciblée à cela.
Assurez-vous d’utiliser body-parser
pour Express. Si votre projet dépend du code standard généré, il est probablement déjà inclus dans le script de votre serveur principal. Si non:
var bodyParser = require('body-parser');
app.use(bodyParser.json());
Installation avec npm: npm install body-parser --save
Le JSON analysé est alors accessible via req.body
:
app.post('/', function(req, res, next) {
console.log(req.body); // not a string, but your parsed JSON data
console.log(req.body.a); // etc.
// ...
});
Pour Express 4+,
const express = require("express");
const app = express();
app.use(express.json());
Ensuite, vous pouvez utiliser req.body
comme prévu.
app.post("/api", (req, res) => {
/*
If the post request included { data: "foo" },
then you would access `data` like so:
*/
req.body.data
...
});