Express js-body-parser nicht funktioniert?

Habe ich Folgendes in mein-node-server mit express (gekürzt auf die wichtigsten Teile):

var app = express.createServer();

app.all(/test/,function(req,res){
    console.log(req.headers);
    console.log(req.body);
    res.send("");
});

function appStart(cobrands){
    app.configure(function(){
        app.use(express.bodyParser());
        app.use(express.cookieParser());

        app.use('/min',express.static('../min'));
        app.use('/js',express.static('../js'));
        app.use('/css',express.static('../css'));
        app.use('/img',express.static('../img'));
    });
    app.listen(8080);
}

Dann habe ich ein einfaches Formular, das ruft aus auf localhost:8080 etwa so:

<form action="http://localhost:8080/test" method="post">
    <input type="hidden" name="test" value="testing"/>
    <input type="submit" name="submit" value="to node"/>
</form>

Aber express.bodyParser nicht zu sein scheinen etwas zu tun, und erf.Körper ist nicht definiert. Hier ist die Ausgabe des console.logs:

//req.headers
{ host: 'localhost:8080',
  'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_1) AppleWebKit/534.48.3 (KHTML, like Gecko) Version/5.1 Safari/534.48.3',
  'content-length': '27',
  accept: 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
  origin: 'file://',
  'content-type': 'application/x-www-form-urlencoded',
  'accept-language': 'en-us',
  'accept-encoding': 'gzip, deflate',
  cookie: '',
  connection: 'keep-alive' }
//req.body
undefined

Hinweis: content-type ist richtig definiert als application/x-www-form-urlencoded wie es sein sollte für bodyParser zu arbeiten, und ich habe festgestellt, dass es kommt, indem Sie knallen öffnen Sie die debug-tools von Safari und überprüfen Sie, dass die Formular-Daten vorhanden sind.

Blick auf dein code-snippet, das Sie nur benutzt hatte app.post('/search', ...) anstelle der app.get('/search', ...)

InformationsquelleAutor Jesse | 2011-09-17

Schreibe einen Kommentar