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

Node.js Express express.json和express.urlencode使用表单提交

凌长恨
2023-03-14
问题内容

Express(或Connect的)bodyParser中间件已标记为已弃用,建议用户改为使用:

app.use(connect.urlencoded())
app.use(connect.json())

但是,当我从 Action中的Node.js 运行示例时,我使用curl来按照书中的建议填写表格:

curl -F entry[title]='Ho ho ho' -F entry[body]='santa loves you' http://abc:123@127.0.0.1:3000/api/entry

没用 req.body没有定义。我想念什么吗?它与bodyParser一起正常工作。

编辑:自Express 4起的解决方案

以这种方式解析json:

var bodyParser = require('body-parser');

...

app.use(bodyParser.json());

通过以下方式解析urlencoded主体:

app.use(bodyParser.urlencoded({extended: true}));

则没有弃用警告。扩展名:true(默认)使用qs模块,false使用querystring模块来解析正文。

请勿使用app.use(bodyParser()),该用法现已弃用。


问题答案:

bodyParser实际上三个中间件(见组合物文档和相关的源代码):
jsonurlencodedmultipart

  • json解析application/json请求主体
  • urlencoded解析x-ww-form-urlencoded请求主体
  • multipart解析multipart/form-data请求主体,这就是您感兴趣的内容。

如果仅指定jsonurlencoded中间件,则任何中间件都不会解析表单数据,因此req.body不会定义。然后,您需要添加一个中间件,该中间件能够解析表单数据,例如强大,busboy或多方(如connect的文档所述)。

这是一个使用的示例multiparty

var multipart = require('connect-multiparty');
var multipartMiddleware = multipart();
app.use('/url/that/accepts/form-data', multipartMiddleware);
app.post('/url/that/accepts/form-data', function(req, resp) {
    console.log(req.body, req.files);
});

不要忘了通过使用这样的中间件,任何人都可以将文件上传到您的服务器:这是您处理(和删除)这些文件的责任。



 类似资料:
  • 问题内容: 看起来这应该是jQuery内置的东西,不需要多行代码,但是我找不到“简单”的解决方案。说,我有一个HTML表单: 当有人更改选择字段时,我想使用ajax提交表单以更新数据库。我认为可以通过以下方式来执行以下操作,而无需手动创建值/属性,只需将它们全部发送即可,例如: 我想念什么? 问题答案: 这就是最终的工作。

  • 问题内容: 我正在尝试使用jquery将值提交到数据库。我是ajax的新手,但是我必须使用ajax。 到目前为止,这是我已经完成的PHP代码 我的html代码是 这是我使用jQuery的ajax 我不知道我在做什么错。任何帮助将不胜感激 问题答案: 与其干扰表单的Submit事件,不如点击事件。要对现有设置进行最小的更改,只需将点击处理程序添加到表单提交按钮。处理程序中的第一件事是调用e.prev

  • 问题内容: 我正在尝试使用AJAX技术添加评论,但出现错误: 这是我的代码:View: 控制器: AJAX: 最后一条路线: 任何人都知道问题出在哪里,为什么我不能提交表格? 问题答案: 您没有发布任何数据, 您得到的错误是DB中的列不能为空。 尝试将您的ajax调用更改为此: 改变这个 至 并获取消息和帖子ID: 完成ajax块: 最后,在隐藏字段中添加一个ID: 从Laravel控制器发送回数

  • 问题内容: 我有一个ID为ID的表单,该表单具有以下div,其中包含一个Submit按钮: 单击后,将调用该函数。该函数将上述div的innerHTML更改为“ processing …”(因此,提交按钮现在消失了)。 上面的代码有效,但是现在的问题是我无法提交表单!我试着把它放在函数中: 但这是行不通的。 我该如何提交表格? 问题答案: 将表单的属性设置为,代码即可正常工作。

  • 问题内容: 我试图使用此示例使用AJAX提交HTML表单。 我的HTML代码: 我的剧本: 这是行不通的,我什至没有收到警告消息,提交时我不想重定向到另一个页面,我只想显示警告消息。 有简单的方法吗? PS:我有几个领域,我仅举两个例子。 问题答案: AJAX快速描述 AJAX只是异步JSON或XML(在大多数新情况下为JSON)。因为我们正在执行ASYNC任务,所以我们很可能会为我们的用户提供更

  • 问题内容: 我正在尝试使用phantomJS(真棒的工具!)为具有登录凭据的页面提交表单,然后将目标页面的内容输出到stdout。我可以使用幻像访问该表单并成功设置其值,但是我不太确定提交表单并输出后续页面内容的正确语法。到目前为止,我有: 问题答案: 我想到了。基本上,这是一个异步问题。您不能只是提交并期望立即呈现下一页。您必须等到触发下一页的onLoad事件。我的代码如下: