无法访问 POST 数据 [重复]
Posted
技术标签:
【中文标题】无法访问 POST 数据 [重复]【英文标题】:Cannot access POST data [duplicate] 【发布时间】:2014-03-13 04:06:30 【问题描述】:我无法在我的 node.js 应用程序中访问 POST 数据。我也在用快递。
app.js:
app.post("/sent_message", function(request, response)
console.log(request.body.message.name + " " + request.body.message.content);
);
html:
<form method="post" action="/sent_message">
<input type="text" name="message[name]">
<textarea name="message[content]"></textarea>
<input type="submit">
</form>
【问题讨论】:
你有bodyParser
中间件吗?
我会尝试不带括号看看效果如何
@SLaks 那是你的问题。谢谢。
【参考方案1】:
您必须包含app.use(express.bodyParser());
。
【讨论】:
bodyParser
不推荐。请改用express.urlencoded()
和express.json()
。如果您需要解析多部分表单数据(即文件上传),您应该使用 Busboy 或 Formidable。
@EthanBrown,JSON 或 URL 编码与 POST 请求有什么关系?
POST 请求将字段(通常)作为请求的主体传输。该正文以一种称为“URL 编码”的格式编码,这就是 express.urlencoded()
中间件所做的。 (它实际上是 Connect 中间件,但可以通过 Express 获得)。 express.json()
不是很常用,但是一些客户端(尤其是 AJAX 请求)将正文编码为 JSON 格式而不是 URL 编码。
express.bodyParser()
仅包括 express.urlencoded()
、express.json()
和 express.multipart()
。不推荐使用的原因是 express.multipart()
已被弃用,并将在下一版本的 Express 中完全删除。幸运的是,Busboy 和 Formidable 非常熟练地处理多部分编码。以上是关于无法访问 POST 数据 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
在POST请求结束之前无法访问最近保存的数据 - node.js
我无法显示来自 mysql 数据库的数据,而是告诉我访问被拒绝 [重复]
event.params 评估为未定义;无法使用 Cloud Functions 访问 Firebase 实时数据库中的 event.params.post