对于最新版本的Express,建议(通过调试消息传达)是停止使用bodyParser
中间件。我读了一下,看起来bodyParser是json
和urlencoded
中间件的包装 - 而且最近版本的Express(3.4.4)使用这两个而不是开箱即用bodyParser
- 太棒了,对吧?
但现在,我无法前往我的田地。 req.body
未定义。这是我的JS表单提交代码(仅限文本字段,无文件)。有人可以告诉我,我使用req
的哪个属性/功能来获取值?
var formData = new FormData($('#myForm')[0]);
$.ajax({
url: '/myurl',
cache: false,
contentType: false,
processData: false,
data: formData,
type: 'POST',
success: function(data) {
console.log(data);
},
error: function(jqXHR, textStatus, errorThrown) {
console.error('Error occured: ' + errorThrown);
}
});
答案 0 :(得分:13)
问题是,在发送FormData
时,Content-Type
将为multipart/form-data
。
虽然您使用的是express.json()
和express.urlencoded()
,但它们中的每一个都只分别针对特定Content-Type
s - application/json
和application/x-www-form-urlencoded
。< / p>
由于安全问题,Express / Connect将取消对multipart()
的内置支持以及将来解析multipart/form-data
内容。他们改为recommend using:
因此,对于未来对Express / Connect的FormData
和multi-part
的支持,您将不得不使用附加依赖项。