当前位置: 首页 > 面试题库 >

如何从Express(Node.js)中的表单获取数据

拓拔坚
2023-03-14
问题内容

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

我的客户端有以下表​​格:

<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() 适用于x-www-form-urlencoded内容类型

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

json() -适用于application / json内容类型

请注意,form / multipart需要不同的正文解析器(例如multer)



 类似资料:
  • 问题内容: 我似乎无法恢复发送到我的Node.js服务器的发布请求的表单数据。我在服务器代码和发布请求(在chrome中使用postman发送)的下方放置了: 发布请求 NodeJS服务器代码 登录方法尝试获取,但是始终为空。我在SO上看到过其他描述这种行为的案例,但是没有相关的答案在这里适用。 感谢您的帮助。 问题答案: 通常,快速应用程序需要指定适当的主体解析器中间件才能包含主体。 [编辑]

  • 问题内容: 我正在启动我的第一个Node.js服务器。我正在尝试遵循Node.js中的教程。 安装完Node.js并执行后,下一条指令是通过运行启动服务器,这将产生以下错误: 似乎它需要一个名为express的模块,因此我环顾四周,找到了可以解决此问题的命令。但是,出现以下错误: 问题答案: 对于以前跑步的人来说,似乎可以解决该问题

  • 问题内容: 我正在尝试让我的函数返回http get请求,但是,无论如何,它似乎在?scope中丢失了。我对Node.js不熟悉,因此不胜感激 问题答案: 当然,您的日志会返回:您在完成请求之前先进行日志。问题不是范围,而是 异步性 。 是异步的,这就是为什么它将回调作为参数的原因。做您在回调中要做的事情(传递给的):

  • 在db.js中有一个代码片段,如下所示, 并且我想获得当我在app.js中调用函数时的结果数据,如下所示。 正如您所看到的,当我试图从db.js获取数据时,它在控制台窗口中显示“the data is undefined”。我该如何解决这个问题?有什么建议吗?

  • 问题内容: 我需要从表单获取数据。 我使用JavaScript创建表单: 那么我需要从输入字段中获取数据。 这是我的视图函数: 但我得到一个错误: 帮我从表格中获取数据。 问题答案: 从Flask的请求对象获取表单数据: 你还可以设置默认值以避免400错误,如下所示:

  • 我正在尝试使用axios或fetch将react组件的表单数据发送到服务器。我写的所有代码都失败了(在onSubmit中)。我的服务器端口是5000。我已经在服务器中设置了bodyParser。js也是。 应用程序。使用(bodyParser.json());应用程序。使用(bodyParser.urlencoded({extended:false})); 下面是我在node中编写的代码。js。请