Jud*_*bas 46 javascript node.js express
我的客户端有这个表格.
<form action="game" method="get">
<input type="text" name="name"/>
<input type="submit" />
</form>
Run Code Online (Sandbox Code Playgroud)
我在我的服务器上有这个脚本.
app.get('/game',function(req,res){
res.sendfile(__dirname + '/game.html');
});
Run Code Online (Sandbox Code Playgroud)
帮忙.
Ale*_*der 49
使用bodyParser.urlencoded(
)中间件:
const bodyParser = require('body-parser');
app.use(bodyParser.urlencoded({ extended: true }));
Run Code Online (Sandbox Code Playgroud)
然后表单值将在req.body上:
app.post('/game', function (req, res) {
res.render('the_template', { name: req.body.name });
});
Run Code Online (Sandbox Code Playgroud)
设置{ extended: true }
允许bodyParser接受包含嵌套对象的表单数据中的json数据.例如,{ person: { name: Adam } }
使用javascript而不是传统HTML表单发送的名称值对发送.如果您不需要,可以将扩展值设置为false.未定义扩展选项(即使用默认设置)显然已弃用,他们似乎希望您决定是否需要嵌套选项或普通名称值对.
如果您希望能够解析某些路由的表单数据以及快速服务器中其他路由的json数据,您可以使用:
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: <true|false> }))
Run Code Online (Sandbox Code Playgroud)
urlencoded()
对于x-www-form-urlencoded内容类型
true
- 用于嵌套数据结构false
- 用于名称值对json()
- 用于application/json内容类型
请注意,form/multipart需要不同的主体解析器(例如multer)
Aar*_*ell 34
为了让express快速处理表单数据,您需要确保bodyParser
包含如下:
var express = require('express'),
app = express.createServer();
app.use(express.bodyParser());
//the rest of your configuration
Run Code Online (Sandbox Code Playgroud)
然后在您的POST处理程序中,您可以通过Request.body
属性访问表单主体,如下所示:
app.post('/game', function (req, res) {
res.render('some-file', { name: req.body.name });
});
Run Code Online (Sandbox Code Playgroud)
如果您打算在响应中输出表单数据,您还需要使用模板引擎(如Jade).
不推荐使用,接受的答案是正确的解决方案
或者您可以简单地使用 express 来执行此操作:
const express = require('express')
const app = express()
app.use(express.json()) // for json
app.use(express.urlencoded({ extended: true })) // for form data
Run Code Online (Sandbox Code Playgroud)