Я пытался использовать body-parser, но кажется, что он не работает - PullRequest
1 голос
/ 17 марта 2020

Я использую парсер тела с express, но он не работает, и он возвращает пустой объект, когда я печатаю req.body в консоли.

var express = require('express');
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({extended: true}));
app.set('view engine','ejs');

app.get('/' ,function(req,res){
var name = "ganesh"
console.log(req.body.name);
res.render('home',{name : name});
});

app.post('/postname' , function(req,res){
res.redirect("/");
});

app.listen(3000,function(){
console.log("server started");
};

это мой файл home.e js

<html>
<head>
    <title>practice</title>

</head>
<body>
    <h1>
        hello<%= name %> This is the home page
    </h1>
    <form action="/postname" method = "POST">
        <input type = "text" name="name">
        <button>
            go
        </button>
    </form>
</body>

у меня правильно установлен анализатор тела e js и express

, это напечатано в консоли:

server начал {}

1 Ответ

1 голос
/ 17 марта 2020

Вы перенаправляете запрос postname на /. Обратите внимание, что он не будет перенаправлять request data на / root маршрут.

res.redirect("/") отправит ответ клиенту со статусом 302, а затем клиент отправит запрос Get на маршрут / без каких-либо данных. следовательно, request.body всегда будет содержать пустые данные в запросе Get.

Вы можете обработать данные в маршруте postname и затем перенаправить их.

Если вы хотите переслать данные с маршрута postname на /, вы можете передать их по query string.

Пример:

var app = express();
var app = express();
var bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));
app.set('view engine', 'ejs');
app.get('/', function (req, res) {
    var name = "ganesh"
    res.render('home', { name: req.query.name });
});
app.post('/postname', function (req, res) {
    var name = "ganesh"
    console.log(req.body.name);
    // handle the post data here 
    res.redirect("/?name=" + req.body.name);
});
app.listen(3000, function () {
    console.log("server started");
});
...