2016-03-20 7 views
0

Ich bin neu bei node.js und möchte die eingegebenen Formulardaten nach der Formularverarbeitung an die Eingabefelder zurückgeben, wenn die Daten im Formular fehlerhaft sind (Beispiel: Benutzername wird bereits verwendet) . Ich versuche es mit Hilfe von EJS zu tun, aber die Form scheint den Wert nicht zu finden.Wie Formulareingaben richtig in node.js zwischenspeichern?

Unten ist mein app.js Code-Schnipsel:

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

app.use(bodyParser.json()); 
app.post('/',function(req,res){ 
    var username = req.body.username; 
    res.render('registration', {title: 'Registration', 
          username: username}); 
}); 

unter meinem registration.ejs Codeausschnitt ist:

<form class="form" action="/" method="post" name="regForm"> 

       <div class="form-group"> 
       <input type="text" value="<% username %>" name="username" class="form-control" id="username" placeholder="Username" onblur="validateUsername(this.value)" required> 
       </div> 
</form> 

Nach Entsendung ich das Feld von Benutzername mit der zu füllenden erwarten Wert ich eingegeben, aber es scheint nicht zu passieren. Was könnte das verursachen?

Mache ich dieses Cache-Ding richtig oder gibt es eine Möglichkeit, Formulareingaben besser zwischenzuspeichern?

+0

Sind Sie sicher, dass 'req.body.username' eine Zeichenfolge ist? Verwenden Sie die entsprechende Body-Parsing-Middleware (z. B. die Middleware 'urlencoded()' body-parser')? – mscdex

+0

Ich habe dies in meinem Code: app.use (bodyParser.json()); Darauf beziehen Sie sich richtig? – dtem052996

Antwort

0

Sie müssen die bodyParser.urlencoded({ extended: false }) Formular-Parsing-Middleware verwenden, da das HTML-Formular ein application/x-www-form-urlencoded Formular übermittelt, nicht application/json formatierte Formulardaten.

+0

Es sei denn, Sie haben andere Formularübermittlungen, die 'application/json'-formatierte Anfragen senden. – mscdex

0

Ich habe herausgefunden, was los war. Ich habe vergessen, "=" nach <% in meinem EJS-Code zu setzen. Es hat danach funktioniert.