我正在执行AJAX get请求,这是在Paw/Postman这样的程序中得到的响应:
[
{
"registrantKey": 4131401026087862797,
}
]然而,当我这样做时:
.done(function(data, textStatus, jqXHR) {
$.each(data, function(index){
console.log(data[index].registrantKey);
});
})它将注册者的键值视为一个大数字,并舍入最后一个数字,因此正在打印到控制台的值为: 4131401026087863000。如何获得原始值,如Paw/Postman中所示。我不需要对它执行任何数学运算,我只需要它的值。我尝试过用toString()方法进行实验,但我无法让它起作用。你的帮助将不胜感激。
遗憾的是,更新在javascript中是不可能的。唯一的解决方案是使用另一种语言或尝试让原始开发人员以字符串的形式返回值。谢谢罗里和麦达林。
发布于 2016-11-14 11:15:05
如果您可以以字符串而不是对象的形式访问json (可能在jqXHR对象中),则可以像这样将所有数字转换为字符串:
jsonText = jsonText.replace(/([^\D]\d+[^\D])/g, "\"$1\"").replace(/""/g, "\"");
(小心我的正则表达式,我不确定它在任何情况下是否有效)
然后将您的jsonText作为对象加载。
发布于 2016-11-14 09:30:44
这个问题是由于JS的精确性,与jQuery或AJAX无关。在JS中,一个数字最多只能包含16个整数,最多可以包含9,007,199,254,740,991 (又名Number.MAX_SAFE_INTEGER)。
如果需要显示更大的数字,则必须将其作为字符串处理,但请注意,如果试图将其转换为数字类型,则需要将其舍入到JS可以使用的最大精度。
发布于 2018-03-22 17:48:05
我的第一个解决方案是:从后端将json字符串作为文本/纯文本发送;使用horroble正则表达式将数字替换为字符串,然后解析为object。
然后,在一些bug之后,我们修改了json序列化程序(Jackson lib),如果值是数字的实例,则将其写为string;从后端将string作为application/json发送;删除了前端代码,因为jquery在内容类型为json时进行解析;
大数字操作由BigNumber JQ插件完成。
https://stackoverflow.com/questions/40585328
复制相似问题