【发布时间】:2017-04-23 05:57:27
【问题描述】:
我正在尝试将更新的用户详细信息的表单数据发送到 Angular 2 中的节点服务器的后端,但是我无法发送表单数据并且服务器响应状态为 500,在 angularjs 中我做了一些事情像这样, 服务文件
update: {
method: 'POST',
params: {
dest1: 'update'
},
transformRequest: angular.identity,
'headers': {
'Content-Type': undefined
}
}
在控制器中
var fd = new FormData();
var user = {
_id: StorageFactory.getUserDetail()._id,
loc: locDetails
};
fd.append('user', angular.toJson(user));
UserService.update(fd).
$promise.then(
function(value) {
console.info(value);
updateUserDetailsInStorage();
},
function(err) {
console.error(err);
}
);
我不知道如何在 angular 2 中执行此操作,因为 angular.toJson、angular.identity 和 transformrequest 功能在 angular 2 中不可用, 到目前为止,我在角度 2 中完成了以下操作,
let fd = new FormData();
let user = {
_id: this.appManager.getUserDetail()._id,
loc: locDetails
};
fd.append('user', JSON.stringify(user));
this.userService.update(fd).subscribe((value) => {
console.log(value);
this.updateUserDetailsInStorage();
}, (err) => {
console.error(err);
});
http服务文件
update(body) {
console.log('update', body);
const headers = new Headers({
'Content-Type': undefined
});
const options = new RequestOptions({
headers: headers
});
return this.http.post(`${app.DOMAIN}` + 'user/update', body, options)
.map((res: Response) => {
res.json();
}).do(data => {
console.log('response', data);
})
}
我已经阅读了很多帖子并尝试了一些事情,但到目前为止都没有成功,谁能建议我如何做到这一点?
【问题讨论】:
-
你到底哪里失败了?控制台有错误吗?
-
没有控制台错误,服务器以 500 状态响应,而当我运行我在 angularjs 中创建的相同应用程序时,它可以正常工作
-
如果您确定发布的 url 是正确的,您还可以 JSON.stringify 您发送的正文变量吗?并且可能将“Content-Type”更改为“application/json”
-
当我尝试其中一个或两个时,请求负载变为 {}
标签: javascript angular multipartform-data form-data