express:不能通过request.body.paramName直接访问参数

时间:2014-06-28 23:51:29

标签: node.js angularjs express mean-stack

我正在尝试从角度应用提交表单:

 var formdata={
         date:$scope.myForm.date
        ,name:$scope.myForm.name
        ,mobile:$scope.myForm.phone
    };

$http({
        method:"POST"
        ,url:'/forms/submit'
        ,data:formdata
        , headers:{'Content-type':"application/x-www-form-urlencoded; charset=utf-8"}
    })

但是当我用request.body.date请求它时,我得到了未定义。打印request.body参数将通过。

Listening on port 3000
'----   submitForm -----'
{ '{"date":"20140630","name":"asdf","phone":"12312"}': '' }

服务器代码使用body-parser

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

当我打印request.body.name时,我正在undefined,但它就在你看到的那里。我做错了什么?

1 个答案:

答案 0 :(得分:0)

您需要先将formdata转换为urlencoded字符串,否则将其序列化为JSON($ http)。这就是你目前在服务器端看到JSON的原因。

如果您已在页面上使用jQuery,则可以通过formdata转换$.param(formdata)对象,并将其用作data值。