先看下面两张图
上面截图都是chrome浏览器请求同一接口返回的json,同一条数据ID却不相同,唯一区别是,一个chrome将json转成了对象,另一个没有转换。
再运行下面的代码:
<script> alert(-3458764513820394039) </script>
运行后弹出的是:
-3458764513820394000
问题整明白了,js的精度问题,坑爹啊。
axios会自动转JSON,只要转了JSON,精度就丢失了。
解决办法有两种:
1、让后端将ID转成字符串
2、用xmlhttprequest重写请求,将返回的字符串,用正则,将id值加上引号,然后再转JSON