2016-05-03 4 views
-1

Ich arbeite mit einer Express-App in node.js. Ich habe die folgende HTML-Formular (inputForm.html):in node.js Express-App, req.body nicht <textarea> Wert erhalten?

<form action="/" method="post"> 
Name: <br> 
    <input type="text" name="name" size="45"> 
    <br> 
    Document: <br> 
    <textarea> <input type="text" name="document" size="45"> </textarea> 
    <br> 
    <br> 
<input type="submit"> 
</form> 

und die folgende JavaScript-Datei:

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

app.use(bodyParser.json()); 

app.use(bodyParser.json({type: 'application/vnd.api+json' })); 

app.get('/', function (req, res) { 

    res.sendFile(__dirname + "/" + "inputForm.html"); 

}); 

app.post('/', function (req, res) { 

    var name = req.body.name; 
    var document = req.query.document; 

    console.log(req.body); 

}); 

jedoch nur der erste Wert (Name) zeigt sich, wenn ich drucken req.body zu die Konsole. Wenn ich den Textarea-Tag entferne, wird auch das Dokument angezeigt. Ich möchte es jedoch lassen, weil ich natürliche Zeilenumbrüche in der Dokumenteingabe beibehalten möchte. Weiß jemand, was ich tun muss, um das zu beheben?

Thanks so much!

+0

'' keinen Sinn machen. Der Inhalt des 'textarea' sollte der Text für den Standardwert sein, nicht ein' input' Element. –

+0

Bitte [lernen, Etiketten zu lieben] (http://www.456bereastreet.com/archive/200711/use_the_label_element_to_make_your_html_forms_accessible/) – Quentin

Antwort

2

document ist Teil des Textes des Standard Wertes der Textarea.

Der Textbereich selbst enthält keine name, daher kann er keine erfolgreiche Steuerung sein und sendet keine Daten an den Server.

Geben Sie ihm einen Namen.

<textarea name="document"> &lt;input type=&quot;text&quot; name=&quot;document&quot; size=&quot;45&quot;&gt; </textarea> 
Verwandte Themen