2017-07-10 8 views
1

Hey ich versuche, die Post-Anfrage mit Express und Knoten zu senden und hier ist mein Code.Get http http-Form Daten in Node.JS

index.html

<html> 

<head> 
    <title>Test</title> 
</head> 

<body> 
    <form action="/form" method="POST" enctype="multipart/form-data"> 
     <input type="text" name="imagename"></input> 
     <input type="submit" name="submit" value="submit"></input> 
    </form> 
</body> 

</html> 

ist Meine app.js Datei unten angegeben:

var express = require('express'); 
var app = express(); 
var bodyParser = require('body-parser'); 

app.use(bodyParser.urlencoded({ 
    extended: true 
})); 
app.use(bodyParser.json()); 

app.post('/form', function(req, res){ 
res.setHeader('Content-Type', 'application/json'); 
setTimeout(function(){ 
    res.send(JSON.stringify({ 
     imagename: req.body.imagename || null 

    })); 
    }, 1000); 
}); 

Jetzt soll ich die Ausgabe als Bildname erhalten: // Wert in Form hinzugefügt, wenn wahr oder sonst Null. Und ich bekomme immer einen Nullwert. Ich habe versucht, den Wert von req.body.imageName zu protokollieren, und ich bekomme undefiniert anstelle des Werts, den ich in das Formular eingefügt habe. Jede Hilfe wäre angebracht.

Antwort

5

Sie müssen die body-parser zu Ihrer Express-App hinzufügen.

var app = express(); 
var bodyParser = require('body-parser'); 

// parse application/x-www-form-urlencoded 
app.use(bodyParser.urlencoded({ extended: false })); 

// parse application/json 
app.use(bodyParser.json()); 

Aber ich habe gesehen, dass Sie das Formular mit den enctype='multipart/formdata' deklariert haben. Dies wird normalerweise verwendet, um Datei-Uploads zu machen, wenn es wirklich das ist, was Sie wollen, müssen Sie another parser dafür verwenden.

+0

Ich versuche, eine Datei hinzuzufügen und so habe ich multipart/Formulardaten verwendet. und ich habe die zwei Zeilen für bodyparser aufgenommen, habe vergessen, hier zu kopieren. Aber weil nichts funktionierte, dachte ich, dass zuerst der Text funktioniert und dann werde ich in die Datei schauen und den Datei-Upload-Teil kommentieren. Vielen Dank. –

+0

@ JonathanLonowski und Edmundo Rodrigues Vielen Dank für Ihr Feedback. Ich konnte die Daten senden, als ich den Multipart aus dem Formular entfernte. Jetzt werde ich Mulder verwenden und hoffe, dass das mit den Dateien klappt. Prost. –

0

Sie benötigten 'body-parser' Middleware, aber vergessen, es in Ihrer express App zu verwenden.

app.use(bodyParser.urlencoded()) 

und Sie brauchen nicht diese

enctype="multipart/form-data" 
+0

Ich hatte bereits die app.use (bodyParser.urlencoded()) in meinem Code nur vergessen, hier zu kopieren. und ich brauche den zweiten Teil, weil ich in Zukunft Datei-Uploads verwenden werde. –