gpt4 book ai didi

javascript - AngularJS $http get 请求未正确编码对象内的日期

转载 作者:行者123 更新时间:2023-11-29 15:20:04 30 4
gpt4 key购买 nike

请看这个问题。

当我尝试通过 $http(类型 GET)发送对象(包含日期作为属性)时 - 我得到的 URL 包含“:”。

例如对象:

var a = {date:"15:36", name:"Test"}

我期待,我会收到类似“site.com?date=15%3A36&name=test”的信息

但实际上我得到:“site.com?date=15:36&name=test”

如果我理解正确 - 原因在:https://github.com/angular/angular.js/blob/master/src/ng/http.js

第 50 行:

parts.push(encodeUriQuery(key) + '=' + encodeUriQuery(serializeValue(value)));
In my example - it is object, not array. First of all - it is serializeing value. (serializeValue(value))

第 13-18 行

function serializeValue(v) {
if (isObject(v)) {
return isDate(v) ? v.toISOString() : toJson(v);
}
return v;
}

它是对象,但不是日期(它包含日期作为属性)。这样我们就得到了 json 字符串。

之后 - 它正在将数据编码为 URI 查询。

我在这里找到它:github.com/angular/angular.js/blob/720012eab6fef5e075a1d6876dd2e508c8e95b73/src/ngResource/resource.js

(第 405-411 行)(无法添加 2 个链接,抱歉)。

 function encodeUriQuery(val, pctEncodeSpaces) {
return encodeURIComponent(val).
replace(/%40/gi, '@').
replace(/%3A/gi, ':').
replace(/%24/g, '$').
replace(/%2C/gi, ',').
replace(/%20/g, (pctEncodeSpaces ? '%20' : '+'));
}

它使用 encodeURIComponent 输入数据进行编码,但在它返回值之后是 @, :, $,

是 AngularJS 的错误,还是我做错了什么?我使用 AngularJS 版本 1.5.6。请让我知道您的想法或想法。

最佳答案

使用 $httpParamSerializerJQLike Link

示例:

$http({
url: URL,
method: 'GET',
params: { date:"140:30", number:"10" },
paramSerializer: '$httpParamSerializerJQLike',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
})

关于javascript - AngularJS $http get 请求未正确编码对象内的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44713104/

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