Zugriff auf POST-Formularfelder in Express

Lesezeit: 3 Minuten

Benutzer-Avatar
murvinlai

Hier ist mein einfaches Formular:

<form id="loginformA" action="userlogin" method="post">
    <div>
        <label for="email">Email: </label>
        <input type="text" id="email" name="email"></input>
    </div>
<input type="submit" value="Submit"></input>
</form>

Hier ist mein Express.js/Node.js-Code:

app.post('/userlogin', function(sReq, sRes){    
    var email = sReq.query.email.;   
}

Ich habe es versucht sReq.query.email oder sReq.query['email'] oder sReq.params['email']usw. Keiner von ihnen funktioniert. Sie alle kehren zurück undefined.

Wenn ich auf Get Call umstelle, funktioniert es, also .. eine Idee?

  • SICHERHEIT: jeder mit bodyParser() Aus den Antworten hier sollte auch die Antwort von @ SeanLynch unten gelesen werden

    – FelipeAls

    24. November 2013 um 20:06 Uhr


Benutzer-Avatar
Vorliebe

Express v4.17.0

app.use(express.urlencoded( {extended: true} ))

app.post('/userlogin', (req, res) => {    

   console.log(req.body) // object

   var email = req.body.email;

}

express.urlencodiert

Demo-Formular

Eine andere Antwort verwandt

  • Was ist der Zweck des Setzens von Extended auf True? was bedeutet das?

    – Klewis

    13. März 2021 um 1:48 Uhr

  • Diese Option ermöglicht die Wahl zwischen dem Parsen der URL-kodierten Daten mit der querystring-Bibliothek (wenn falsch) oder der qs-Bibliothek (wenn wahr). Die „erweiterte“ Syntax ermöglicht die Codierung von umfangreichen Objekten und Arrays in das URL-codierte Format, was eine JSON-ähnliche Erfahrung mit URL-Codierung ermöglicht.

    – Vorliebe

    22. April um 8:27 Uhr

  • Das ist mir sehr gelungen! Das app.use(express.urlencoded({ extended: true })) funktionierte in meinem Fall nicht, daher konnte ich die Körperdaten nicht abrufen. Vielen Dank!

    – Edgar Magallon

    24. April um 2:22


In irgendeiner Form gegeben:

<form action='/somepath' method='post'>
   <input type="text" name="name"></input>
</form>

Express verwenden

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

    console.log(JSON.stringify(req.body));

    console.log('req.body.name', req.body['name']);
});

Ausgabe:

{"name":"x","description":"x"}
req.param.name x

  • hat bei mir nicht funktioniert. müssen app.use(express.bodyParser()) verwenden;

    – cawecoy

    22. Juni 2013 um 23:19 Uhr

  • @cawecoy absolut richtig hier, aber express.bodyParser() funktioniert nicht so gut für mich, es ist veraltet

    – Mohammad Faizan Khan

    29. Oktober 2014 um 6:10 Uhr


  • @MohammadFaizankhan, es war eine experimentelle Arbeit, ich habe Express nicht mehr verwendet, kann jetzt nicht helfen. Google es nach ähnlichen Funktionen wie express.bodyParser(). Viel Glück!

    – cawecoy

    31. Oktober 2014 um 21:43 Uhr


  • Dies funktioniert nur, wenn Sie Body-Parser verwenden

    – German Acosta

    18. März um 2:48 Uhr

Benutzer-Avatar
Shivam Jha

Aktualisieren

Ab Express version 4.16+ihre eigene Body-Parser-Implementierung ist jetzt im standardmäßigen Express-Paket enthalten, sodass Sie keine weitere Abhängigkeit herunterladen müssen.

Möglicherweise haben Sie Ihrem Code eine Zeile hinzugefügt, die wie folgt aussieht:

app.use(bodyparser.json()); //utilizes the body-parser package

Wenn Sie Express 4.16+ verwenden, können Sie diese Zeile jetzt ersetzen durch:

app.use(express.json()); //Used to parse JSON bodies

Dies sollte keine Breaking Changes in Ihre Anwendungen einführen, da der Code in express.json() auf bodyparser.json() basiert.

Wenn Sie auch den folgenden Code in Ihrer Umgebung haben:

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

Sie können das ersetzen durch:

app.use(express.urlencoded()); //Parse URL-encoded bodies

Ein letzter Hinweis zur Vorsicht: Es gibt immer noch einige sehr spezifische Fälle, in denen body-parser vielleicht immer noch notwendig, aber zum größten Teil Express‘ Implementierung von Body-Parser ist alles, was Sie für die meisten Anwendungsfälle benötigen.

(Siehe die Dokumentation unter expressjs/bodyparser für mehr Details).

  • hat bei mir nicht funktioniert. müssen app.use(express.bodyParser()) verwenden;

    – cawecoy

    22. Juni 2013 um 23:19 Uhr

  • @cawecoy absolut richtig hier, aber express.bodyParser() funktioniert nicht so gut für mich, es ist veraltet

    – Mohammad Faizan Khan

    29. Oktober 2014 um 6:10 Uhr


  • @MohammadFaizankhan, es war eine experimentelle Arbeit, ich habe Express nicht mehr verwendet, kann jetzt nicht helfen. Google es nach ähnlichen Funktionen wie express.bodyParser(). Viel Glück!

    – cawecoy

    31. Oktober 2014 um 21:43 Uhr


  • Dies funktioniert nur, wenn Sie Body-Parser verwenden

    – German Acosta

    18. März um 2:48 Uhr

Benutzer-Avatar
HILFE

aus offiziell Dokumentversion 4

const express = require('express')
const app = express()
app.use(express.json());
app.use(express.urlencoded({ extended: true })) 

app.post('/push/send', (request, response) => {
  console.log(request.body)
})

1010840cookie-checkZugriff auf POST-Formularfelder in Express

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy