Jquery的JSON响应.ajax四舍五入较大的数字,所以我不能得到正确的值
JSON response from Jquery.ajax is rounding larger number so I can't get correct value
我正在执行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中是不可能的。唯一的解决方案是使用另一种语言或尝试让原始开发人员以字符串形式返回值。谢谢Rory和Madalin。
这个问题是由于JS的精度,与jQuery或AJAX无关。在JS中,一个数字最多只能包含16个整数,最多只能包含9,007,199,254,740,991
(也就是Number.MAX_SAFE_INTEGER
)
如果你需要显示一个更大的数字,那么你必须把它作为一个字符串来处理,但要注意,如果你试图将它转换为数字类型,它将被舍入到JS可以使用的最大精度。
如果您可以将json作为字符串而不是对象(可能在jqXHR对象中)访问,则可以将所有数字转换为字符串,如下所示:
jsonText = jsonText.replace(/([^'D]'d+[^'D])/g, "'"$1'"").replace(/""/g, "'"");
(小心我的正则表达式,我不确定它是否在任何情况下都有效)
加载jsonText作为对象后
我的第一个解决方案是:从后端发送json字符串作为text/plain;使用糟糕的正则表达式将数字替换为字符串,然后解析为object。
然后在一些错误之后,我们修改了json序列化器(jackson lib),如果value是Number的实例,则将其写入字符串;从后端发送字符串作为application/json;删除前端代码,因为如果内容类型是json, jquery会解析;
使用bignnumber JQ插件
- 用户名输入如果其他块不能正常工作/Javascript-jQuery-AJAX
- 为什么我不能在 ajax 成功中访问 $(this)
- select2 使用 AJAX 加载数据不能选择任何选项
- 无法在铬下加载资源!目前不能使用 ajax
- 我的ajax加载栏出了什么问题?为什么它不能正常工作
- 使用jQuery同步Ajax请求;我不能在Adobe Air上工作
- 为什么这个ajax脚本不能在wamplocalhost上工作
- jQuery AJAX刷新没有'不能在iPhone上工作
- 不能让一个简单的Ajax工作
- 为什么我不能返回 $.ajax 结果,但可以返回 $http.post 的结果
- Ajax 不能用 Firefox 发布 A
- Jquery - 为什么我不能在 $.ajax 中访问/设置我的 var
- 为什么我不能做.ajax(返回数据;)?jQuery.
- Ajax 构建关系按钮有效,用于显示引导模式的第二个按钮有效,但两者不能协同工作
- Rails:为什么我的ajax创建的对象不能用于触发javascript
- 不能连接一个 ajax 中的 javascript 变量,而另一个 ajax 内部的 javascript 变量
- 为什么AJAX $.post不能在wordpress中工作
- JQuery Ajax 不能在带有 Struts 的 JSP 中工作
- * 方法工作正常,但不能使用 jQuery ajax
- Ajax在Chrome / Safari中提交作品,但不能在Firefox / IE中提交作品