2017-03-16 2 views
1

ich diesen Code js haben:Req.body = {} nach Anfrage Post

app.use(express.static(__dirname)); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(bodyParser.json()); // support json encoded bodies 

app.get('/', function(req, res){ 
res.sendFile(__dirname+'index.html') 
}); 

app.get('/ins.html', function(req, res){ 
res.sendFile(__dirname+'ins.html') 
}); 

app.post('/ins', function(req, res){ 
console.log(req.body) 
res.redirect('/') 
}); 

Und diesen Code html:

<form method="post" enctype="multipart/form-data" action="/ins"><p> <strong>INSERISCI LA TUA CAGATA<br></strong> 
          <br><p>Username&nbsp</p> <input type="text" name="username" required><br> 
          <br><p>Password &nbsp</p> <input type="password" name="password" required><br><br><br> 
         <input type="submit" class="mainBtn" id="submit" value="Inserisci Cagata"> 
         <p> 
        </form></h2> 

Wenn ich auf die Seite gehen, in Show che Konsole „{ } "und ich habe keinen Zugriff in der POST-Variable. Wie kann ich das Problem lösen?

Antwort

3

Sie verwenden eine andere Kodierung, als Ihre Body-Parser unterstützen.

Sie verwenden Multipart-Codierung (multipart/form-data) in Ihrem Formular, aber Ihr Server erwartet JSON (application/json) oder URL-codierte Daten (application/x-www-form-urlencoded).

Sofern Sie keine Dateien hochladen müssen (für die eine mehrteilige Codierung erforderlich ist), sollten Sie die URL-Codierung verwenden (dies ist der Standardwert, wenn enctype nicht angegeben ist). Dann würde der Körper richtig mit dem bodyParser.urlencoded() Parser analysiert:

<form method="post" enctype="application/x-www-form-urlencoded" action="/ins"> 
         <!-- ^--- note the enctype --> 
    <p> 
    <strong>INSERISCI LA TUA CAGATA<br></strong> 
    <br> 
    <p>Username&nbsp</p> 
    <input type="text" name="username" required> 
    <br> 
    <br> 
    <p>Password &nbsp</p> 
    <input type="password" name="password" required> 
    <br> 
    <br> 
    <br> 
    <input type="submit" class="mainBtn" id="submit" value="Inserisci Cagata"> 
    </p> 
</form> 

Wenn Sie tun müssen mehrt Codierung (zB wenn Sie Dateien hochlädst), können Sie einen mehrteiligen Körper Parser verwenden (z als multiparty oder busboy). Beachten Sie, dass Multipart eine komplexe Kodierung ist. Sie erhalten req.body nicht direkt, aber Sie müssen selbst ein Parsing durchführen, weshalb Sie die Multipart-Kodierung vermeiden sollten, wenn Sie sie nicht wirklich benötigen.