2011-09-22 51 views
25

Uso express y tengo problemas para obtener datos de formulario de bodyParser. No importa lo que haga, siempre aparece como un objeto vacío. Aquí está mi expreso genera app.js código (el único que he añadido era la ruta app.post en la parte inferior):Node.js/Express form post req.body no funciona

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

aquí es mi formulario 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> 

Cuando envío el forma, req.body es un objeto vacío {}

vale la pena señalar que esto ocurre incluso si se quita el atributo de la etiqueta enctype forma

... ¿hay algo que me falta/haciendo mal?

estoy usando v0.4.11 nodo y v2.4.6 expresa

Respuesta

33

El cuerpo de un mensaje HTTP es un hash de clave/valor de todos los controles de formularios con un atributo de name, y el valor es el valor del control.

Debe dar nombres a todas sus entradas.

+0

¡Gracias! No estoy seguro de cómo pasé por alto eso ... – binarymax

4

También debido al tipo de contenido. por favor vea el objeto console.log (req).

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

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

Para comprobar el tipo de contenido por console.log (req.is ('json')) // devuelve verdadero/falso

Creo 'charset = UTF-8' es insignificante en anteriormente.

Cuestiones relacionadas