我正在尝试从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
值。