Вопрос

Я хотел бы получить данные, которые передаются со страницы, используя форму, и использовать эти данные на странице, которая перенаправлена.

У меня есть эта форма в моей клиентской стороне.

    <form action="game" method="get">
                    <input type="text" name="name"/>
                    <input type="submit" />
    </form>

И у меня есть этот скрипт на моем сервере.

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

пожалуйста, помогите.

Это было полезно?

Решение

Использовать bodyParser.urlencoded() промежуточное программное обеспечение:

const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));

Тогда значения формы будут на req.body:

app.post('/game', function (req, res) {
    res.render('the_template', { name: req.body.name });
});

Параметр { extended: true } Позволяет BodyParser принимать JSON, такие как данные в данных формы, включая вложенные объекты. например { person: { name: Adam } } отправлено с помощью JavaScript, а не пары значений имени, которые отправляют традиционная форма HTML. Если вам не нужно, вы можете установить расширенное значение для FALSE. Очевидно, что не определение расширенного варианта (т.е. с использованием настройки по умолчанию), по -видимому, устарело, и они, кажется, хотят, чтобы вы решили, нужны ли вам вложенные параметры или пары простого значения имени.

Если вы хотите иметь возможность проанализировать данные формы для некоторых маршрутов и данных JSON для других на вашем экспресс -сервере, вы можете использовать:

app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: <true|false> }))

urlencoded() для типа контента XWW-FORM-URLENCODE

  • true - Для вложенных структур данных
  • false - Для пары значений имени

json() - Для приложения/типа контента JSON

Обратите внимание, что форма/Multipart требует другого анализатора тела (например, Multer)

Другие советы

Чтобы Express хорошо обрабатывал данные формы, вам нужно убедиться, что у вас есть bodyParser Включено как SO:

var express = require('express'),
    app = express.createServer();

app.use(express.bodyParser());
//the rest of your configuration

Затем в вашем пост -обработчике вы можете получить доступ к корпусу формы через Request.body собственность как SO:

app.post('/game', function (req, res) {
    res.render('some-file', { name: req.body.name });
});

Также вам нужно использовать шаблон -двигатель (например, Джейд) Если вы намереваетесь вывести данные формы в ответе.

Устарело, принятый ответ правильное решение

Если вам нужно получить доступ к именам переменных в ваших представлениях, вам следует использовать res.render функционируйте и передайте переменную как:

res.render('game', {
    name: req.body.name
}

А потом в Джейд

div!= name
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top