![](/img/trans.png)
[英]Form Data Appears to be something else in Request Payload in Angular 4 http request
[英]Angular $resource service send data in Form Data instead of Request Payload
我面对有角度的$ resource服务的问题。
我试图以不同的方式使用某些表单数据来创建REST API。
但是,每次我使用该API时,要么最终要么以QueryParams的形式发送数据,要么最终请求有效载荷。
我实际上需要将数据以编码形式发送。
我的代码如下所示:
var headers = {
'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'
};
var save = function (url, params, headers, successcb, successParams, errorcb, errorParams) {
var promise = $resource(url, null, {
upload: {
method: methodPost,
headers: headers
}
}).save({}, params).$promise;
promise.then(function (response) {
successcb(response.data, successParams);
}, function (error) {
errorcb(error, errorParams);
});
};
我已经附上了角度ajax请求的快照。
参考上面的图片,尽管我设置了x-www-form-urlencoded,但内容类型实际上是显示application / json。 因此,数据将在RequestPayload中而不是FormData中输出。
下面是jQuery ajax调用的另一幅图像。
在这里,您可以清楚地看到content-type是x-www-form-urlencoded,并且工作正常。
我的疑问是,$ resource没有发送适当的标头,因此数据以RequestPayload的形式发送。
有没有人遇到过这个问题?
任何帮助表示赞赏。
谢谢
您可以为此使用转换请求,如下所示。
var transform = function(data) {
return $.param(data);
}
var headers = {
'Content-Type' : 'application/x-www-form-urlencoded;charset=UTF-8'
};
var save = function(url, params, headers, successcb, successParams, errorcb, errorParams) {
var promise = $resource(url, null, {
upload : {
method : methodPost,
headers : headers,
transformRequest : transform
}
}).save({}, params).$promise;
promise.then(function(response) {
successcb(response.data, successParams);
}, function(error) {
errorcb(error, errorParams);
});
};
这是由于$http
服务$resouce
的transformRequest
方法所依赖,该方法始终将Content-Type
标头设置为application/json
。
要纠正此问题,您需要禁用它或将其更改为使用将规格设置为所需功能的功能。
此处的好文章: http : //www.bennadel.com/blog/2615-posting-form-data-with-http-in-angularjs.htm
尝试:
var promise = $resource(url, null, {
upload: {
method: methodPost,
headers: headers,
transformRequest: []
},
}).save({}, params).$promise;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.