gpt4 book ai didi

javascript - 使用 transformRequest 将 JSON 转换为 FormURL 编码数据

转载 作者:行者123 更新时间:2023-11-30 09:35:12 25 4
gpt4 key购买 nike

我正在尝试将 JSON 数据转换为 formURL 编码数据,但仍然无法正常工作。

我的 HTTP 帖子

$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 对象传递给它时,它会返回一个字符串。

最佳答案

由于5da1256 , transformRequest 函数不能再修改请求 header 。此行为是意外且未记录的,因此更改应该会影响极少数应用程序。 1

使用 Content-Type: application/x-www-form-urlencoded 发送 POST 请求:

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;
});

关于javascript - 使用 transformRequest 将 JSON 转换为 FormURL 编码数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43962241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com