我想获取使用表单从页面传递的数据,并在重定向的页面中使用该数据。

我的客户方面有这个表格。

    <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。显然未定义扩展选项(即使用默认设置),他们似乎希望您决定是否需要嵌套的选项或普通名称值对。

如果您想能够为Express Server中的某些路线和JSON数据解析数据,则可以使用:

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

urlencoded() 对于X-WWW-Form-urlenCoded Content类型

  • true - 对于嵌套数据结构
  • false - 姓名价值对

json() - 用于应用程序/JSON内容类型

请注意,形式/多部分需要不同的身体解析器(例如multer)

其他提示

为了使Express能够很好地处理表单数据,您需要确保 bodyParser 包括这样的:

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

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

然后在您的帖子处理程序中,您可以通过 Request.body 这样的财产:

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