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



我正在尝试从angular应用程序提交表单:

 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,但它在那里,如你所见。我做错了什么?

您需要首先将formdata转换为urlencoded字符串,否则它将被序列化为JSON而不是(通过$http)。这就是为什么你现在在服务器端看到JSON。

如果你已经在页面上有jQuery,你可以通过$.param(formdata)转换formdata对象,并使用它作为你的data值。

相关内容

  • 没有找到相关文章

最新更新