Nœud.js/Express post de formulaire req.le corps ne fonctionne pas

j'utilise express et j'ai du mal à obtenir des données de forme à partir du bodyParser. Peu importe ce que je fais, il vient toujours comme un objet vide. Voici mon application générée par express.code js (la seule chose que j'ai ajouté a l'application.post route au bas de la page):

var express = require('express');

var app = module.exports = express.createServer();

// Configuration

app.configure(function(){
    app.set('views', __dirname + '/views');
    app.set('view engine', 'jade');
    app.use(express.bodyParser());
    app.use(express.methodOverride());
    app.use(app.router);
    app.use(express.static(__dirname + '/public'));
});

app.configure('development', function(){
    app.use(express.errorHandler({ dumpExceptions: true, showStack: true })); 
});

app.configure('production', function(){
    app.use(express.errorHandler()); 
});

// Routes

app.get('/', function(req, res){
    res.sendfile('./public/index.html');
});

app.post('/', function(req, res){
    console.log(req.body);
    res.sendfile('./public/index.html');
});

app.listen(3010);
<!-Voici ma forme HTML:

<!doctype html>
<html>
  <body>
<form id="myform" action="/" method="post" enctype="application/x-www-form-urlencoded">
  <input type="text" id="mytext" />
  <input type="submit" id="mysubmit" />
</form>
  </body>
</html>

quand je soumets le formulaire, req.le corps est un objet vide {}

il vaut la peine de noter que cela se produit même si je supprime l'attribut enctype de la forme la balise

...Est-il quelque chose que je suis absent/fais de mal?

j'utilise le noeud v0.4.11 et express v2.4.6

27
demandé sur binarymax 2011-09-23 02:05:02

2 réponses

<form id="myform" action="/" method="post" enctype="application/x-www-form-urlencoded">
  <input type="text" name="I_appear_in_req_body" id="mytext" />
  <input type="submit" id="mysubmit" />
</form>

le corps D'un post HTTP est un hachage clé / valeur de tous les contrôles de forme avec un name l'attribut et la valeur est la valeur de la commande.

vous devez donner des noms à toutes vos entrées.

36
répondu Raynos 2011-09-22 22:10:38

il est aussi dû au type de contenu. veuillez voir la console.log(req) de l'objet.

'content-type': 'application/json; charset=UTF-8’  // valid.

'content-type': 'application/JSON; charset=UTF-8’  // invalid & req.body would empty object {}.

pour vérifier le contenu Tapez par console.log(req.is ('json')) / / return true/false

je pense que 'charset=UTF-8' est négligeable en haut.

4
répondu Bhaveshkumar 2013-07-21 10:27:47