vue中请求的响应数据preview和response数值不准确问题,js的最大安全数解决方案。

461 阅读1分钟

在项目中遇到这样的一种情况,根据请求,响应回来的数据id为请求参数在修改数据,结果修改失败,后来看了请求时的值,发现id都是一样的,但是通过f12控制台打印时,查看response的id是正常的,但是查看preview就不对劲了,后来通过自己翻阅资料发现js中有一个最大的安全数问题。

js的最大安全数是2的53次方,如果比2的53次方再大就会丢失精度。发现这里的问题后应该清楚现在出现问题的情况了。解决方法有两种:

1.如果id值要求不是特别大,找后端协商直接改掉,就不会有大问题。

2.如果真的是遇到特殊情况,前端需要自己去处理,那我们就得思考如何处理了,通过下载“json-bigint”插件,在axios的响应拦截器中添加,具体步骤如下:

安装 josn-bigint npm i json-bigint 在common.js文件导入文件 import JSONBIG from 'json-bigint' 在拦截器之前,携带请求头位置添加转换配置 const instance = axios.create ({ //响应时间5000毫秒 timeout:5000 //设置基地址 baseURL='url地址' //转换数据响应格式,通过transformresponse==>在then和catch之前覆盖默认转换方式 transformresponse:[data=>{ //data是原始字符串数据 const jsonObject = JSONBIG.parse(data) return jsonObject }] })

设置完毕,重新启动项目就可以看到数值正常显示了。

小白一名,记录问题不是很具体,如有问题请指正。