我在Angular中使用HttpClient将表单数据发送到Nodejs。
resetPasswordRequest(email){
this.httpOptions={
headers: new HttpHeaders({
'Content-Type':'application/x-www-form-urlencoded'
})
}
const formData = new FormData();
formData.append('email',email);
return this.http.post("http://localhost:3001/forgotPassword",formData,this.httpOptions);
}
后来在NodeJS中,我有了app.use(bodyParser.urlencoded({extended:true})。
我可以获取req.body,但格式如下:
{ '-----------------------------24875245787704\r\nContent-Disposition: form-data; name':
'"email"\r\n\r\abcd@gmail.com\r\n-----------------------------24875245787704--\r\n' }
我不确定错过了什么。您能否澄清并帮助获得电子邮件的价值?我得到req.body.email为未定义。
答案 0 :(得分:0)
您需要在nodejs中解析formData。参见this question或找到类似的内容。您还确定需要使用formData吗?你可以在体内发送物体
答案 1 :(得分:0)
来自MDN FormData
:
它使用的格式与将编码类型设置为
时使用的格式相同。"multipart/form-data"
这说明了为什么要获取这种格式的数据。
您可以改用angular的HttpParams
:
const formData = new HttpParams();
formData.set('email', email)
return this.http.post("http://localhost:3001/forgotPassword", formData.toString(), this.httpOptions);
toString
为您提供urlencoded
格式。来自docs:
将正文序列化为编码字符串,其中键值对(用=分隔)用&s分隔