我希望使用表单获取从页面传递的数据,并在重定向的页面中使用这些数据.

我的客户端有一张表格:

<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上.正文:

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

设置{ extended: true }允许bodyParser接受表单数据中类似json的数据,包括嵌套对象.e、 g.{ person: { name: Adam } }使用javascript发送,而不是传统HTML表单发送的名称-值对.如果不需要,可以将扩展值设置为false.不定义扩展选项(即使用默认设置)显然是不可取的,他们似乎希望您决定是需要嵌套选项还是纯名称-值对.

如果希望能够在express服务器中解析某些路由的表单数据和其他路由的json数据,可以使用:

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

urlencoded()表示x-www-form-urlencoded内容类型

  • true-用于嵌套数据 struct
  • false-用于名称-值对

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

请注意,form/multipart需要一个不同的主体解析器(例如multer)

Update: fix if you get ExpressJS Error about Body-Parser being Deprecated

代替

app.use(bodyparser.json()); //utilizes the body-parser package
app.use(bodyParser.urlencoded({extended: true}));

通过

app.use(express.json()); // Used to parse JSON bodies
app.use(express.urlencoded()); //Parse URL-encoded bodies

Node.js相关问答推荐

GraphQL MongoDB Mongoose填充字段未获取多个类别

Node.js中Redis的并发问题

使用AWS SDK for JavaScript V3将图像从node.js上传到s3 bucket

如果我在 tsx 文件中使用了use client,ssr 会如何发生?

无法从 mongoDB 访问数据?

无法将示例 Node.js 应用程序部署到 AWS Elastic Beanstalk

在 getServerSideProps 中使用 EmailProvider 获取 NextAuth 会话会抛出 fs找不到模块

为什么它无法发送发布请求并更改为 chrome 中的获取方法?

使用 create-expo-app 时如何更改 webpack-config.js 中的哈希函数?

使用 Forms API 进行批量更新时生成 itemId

获取数组的至少一个元素包含子字符串的文档

AJAX 和 Node JS:在我的服务器中接收空数据

GridFS 大文件下载使 Node.js 服务器崩溃. MongoServerError:排序超出了字节的内存限制

tsc:当我上传 React+next js 和 node 项目时,在 heroku 找不到

users.watch(在 gmail google api 中)如何收听通知?

使用中的端口代码:'EADDRINUSE',即使在 kill 命令之后

错误:大多数中间件(如 bodyParser)不再与 Express Bundle

如何为 node.js 服务器分配域名?

node.js 在控制台上显示未定义

Google Firebase 错误(函数返回未定义、预期的 Promise 或值)