如何在Express中获取POST字段,而不使用bodyParser中间件?

时间:2013-11-26 21:20:10

标签: javascript node.js express middleware

对于最新版本的Express,建议(通过调试消息传达)是停止使用bodyParser中间件。我读了一下,看起来bodyParser是jsonurlencoded中间件的包装 - 而且最近版本的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);
    }
});

1 个答案:

答案 0 :(得分:13)

问题是,在发送FormData时,Content-Type将为multipart/form-data

虽然您使用的是express.json()express.urlencoded(),但它们中的每一个都只分别针对特定Content-Type s - application/jsonapplication/x-www-form-urlencoded。< / p>

由于安全问题,Express / Connect将取消对multipart()的内置支持以及将来解析multipart/form-data内容。他们改为recommend using

  

因此,对于未来对Express / Connect的FormDatamulti-part的支持,您将不得不使用附加依赖项。