Javascript 使用transformRequest将JSON转换为FormURL编码的数据
我试图将JSON数据转换为formURL编码的数据,但仍然无法工作 我的HTTP帖子Javascript 使用transformRequest将JSON转换为FormURL编码的数据,javascript,angularjs,json,form-data,angular-factory,Javascript,Angularjs,Json,Form Data,Angular Factory,我试图将JSON数据转换为formURL编码的数据,但仍然无法工作 我的HTTP帖子 $http.post(API_ENDPOINT.login, credentials, { transformRequest: transformRequestAsFormPost }) 我的转换请求 'use strict'; define(['app-module'], function(app) { $app.info('transformRequest initialized'); r
$http.post(API_ENDPOINT.login, credentials, {
transformRequest: transformRequestAsFormPost
})
我的转换请求
'use strict';
define(['app-module'], function(app) {
$app.info('transformRequest initialized');
return app.factory('transformRequestAsFormPost', function() {
function transformRequest(data, getHeaders) {
var headers = getHeaders();
headers["Content-Type"] = "application/x-www-form-urlencoded; charset=utf-8";
return (serializeData(data));
}
function serializeData(data) {
if (!angular.isObject(data)) {
return ((data === null) ? "" : data.toString());
}
var buffer = [];
for (var name in data) {
if (!data.hasOwnProperty(name)) {
continue;
}
var value = data[name];
buffer.push(
encodeURIComponent(name) +
"=" +
encodeURIComponent((value == null) ? "" : value)
);
console.log(buffer)
}
var source = buffer.join("&").replace(/%40/g, "@");
return (source);
}
return (transformRequest);
});
});
我不知道我做错了什么。当我向其中传递任何JSON对象时,它将返回一个字符串。由于,transformRequest
函数无法再修改请求头。这种行为是非故意的,并且没有记录在案,因此更改应该只影响很少的应用程序
要发送包含内容类型的POST请求:application/x-www-form-urlencoded
:
var config = {
transformRequest: $httpParamSerializer,
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
};
$http.post(API_ENDPOINT.login, credentials, config)
.then(function(response) {
console.log("SUCCESS");
}).catch(function(response) {
console.log("ERROR");
throw response;
});
由于,transformRequest
函数无法再修改请求头。这种行为是非故意的,并且没有记录在案,因此更改应该只影响很少的应用程序
要发送包含内容类型的POST请求:application/x-www-form-urlencoded
:
var config = {
transformRequest: $httpParamSerializer,
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
};
$http.post(API_ENDPOINT.login, credentials, config)
.then(function(response) {
console.log("SUCCESS");
}).catch(function(response) {
console.log("ERROR");
throw response;
});
谢谢,他们应该记录下来。我搜索了几个小时。谢谢,他们应该记录下来的。我找了好几个小时。