2017-04-03 1 views
1

Je suis nouveau à backend javascript et j'ai un formulaire que sur submit est censé montrer l'objet soumis, mais il affiche un objet vide à la place. J'ai inclus body-parser donc je ne suis pas sûr d'où le problème est. Voici mon fichier app.js:req.body retournant l'objet vide (j'ai inclus bodyparser)

const express = require("express"); 
const app = express(); 
const mustacheExpress = require("mustache-express"); 
const bodyParser = require("body-parser"); 
const pgp = require("pg-promise")(); 

app.engine("html", mustacheExpress()); 
app.set("view engine", "html"); 
app.set("views", __dirname + "/views"); 
app.use("/", express.static(__dirname + "/public")); 
app.use(bodyParser.urlencoded({ extended: false })); 
app.use(bodyParser.json()); 

app.get('/new_creature',function(req,res){ 
    res.render('new_creature/index'); 
}); 
app.post('/new_creature', function(req,res){ 
    res.end(JSON.stringify(req.body)); 
    console.log(req.body); 
    // res.render('new_creature/index'); 
}); 

et voici mon point de vue/créatures/new_creature/fichier index.html:

<form method="POST" action="/new_creature"> 
    Species:<input type="text"> 
    Family:<input type="text"> 
    Habitat:<input type="text"> 
    Diet:<input type="text"> 
    Planet:<input type="text"> 
    <input type="submit" placeholder="submit"> 
</form> 

Répondre

4

Si vous voulez bodyparser fonctionne, vous devez avoir les attributs nom vos éléments de formulaire que vous souhaitez afficher. Par exemple:

<form method="POST" action="/new_creature"> 
    Species:<input name='species' type="text"> 
    Family:<input name='family' type="text"> 
    Habitat:<input name='habitat' type="text"> 
    Diet:<input name='diet' type="text"> 
    Planet:<input name='planet' type="text"> 
    <input type="submit" value="submit"> 
</form> 

En outre, l'espace réservé n'a pas de sens sur un bouton de soumission; espace réservé est le texte fantôme qui est censé montrer dans une entrée qui n'a pas été rempli.

+0

Cela a fonctionné, merci –