当前位置: 首页 > news >正文

数据库自增 id 过大导致前端时数据丢失

可以看到,前端响应参数是没有丢失精度的

 但是在接受 axios 请求参数时出现了精度丢失

解决方案一:改变 axios 字符编码

axios.defaults.headers['Content-Type'] = 'application/json;charset=UTF-8';

 未解决

解决方案二:手动使用 json.parse() 方法还原响应数据

axios.defaults.transformResponse = [];
const articles = ref(null);function safeJsonParse(jsonStr) {const regex = /"(\w+)":([^,}]+)/g;let match;let result = '';let index = 0;while ((match = regex.exec(jsonStr))!== null) {const key = match[1];let value = match[2];if (key === 'id' && /^\d+$/.test(value)) {const numValue = Number(value);if (numValue > Number.MAX_SAFE_INTEGER) {value = `"${value}"`;}}result += jsonStr.slice(index, match.index) + `"${key}":${value}`;index = regex.lastIndex;}result += jsonStr.slice(index);return JSON.parse(result);
}const getPostArticles = async () => {const res = await axios({method: 'post',url: '/articles',data: {page: 1,pageSize: 10}});const parsedData = safeJsonParse(res.data); // 手动解析响应数据console.log('手动解析后的原始响应数据:', parsedData);articles.value = parsedData.data;console.log('articles数组为',articles);
};

成功拿到一整个响应的对象,数据没有丢失

但是引发了新的问题,在跳转到文章详情页面后,文章详情发送请求成功却没有正确赋值

找到错误点,整个项目是用的同一个 axios 实例对象,当这个对象开启手动处理响应的 json 参数后,每一个 axios 请求都需要手动处理了

解决方案,请求的 axios 独立出来,选择使用新创建的 axios 实例来发送异步请求 

import axios from 'axios';// 创建自定义的 axios 实例
const customAxios = axios.create({baseURL: 'http://localhost:8888',timeout: 5000
});
//开启自定义处理响应
customAxios.defaults.transformResponse = [];// 获取文章列表的函数
const getPostArticles = async () => {try {const res = await customAxios.post('/articles', {page: 1,pageSize: 10});const parsedData = safeJsonParse(res.data);console.log('手动解析后的原始响应数据:', parsedData);articles.value = parsedData.data;console.log('articles 数组为', articles);} catch (error) {console.error('获取文章列表失败:', error);}
};

这个 axios 实例只为这一个页面服务

http://www.lryc.cn/news/514383.html

相关文章:

  • 第二十六天 自然语言处理(NLP)词嵌入(Word2Vec、GloVe)
  • MongoDB 固定集合
  • 数据结构9.3 - 文件基础(C++)
  • Leetcode 1254 Number of Closed Islands + Leetcode 1020 Number of Enclaves
  • Junit4单元测试快速上手
  • U盘提示格式化?原因、恢复方案与预防措施全解析
  • HTML——13.超链接
  • vue中的设计模式
  • 利用python将图片转换为pdf格式的多种方法,实现批量转换,内置模板代码,全网最全,超详细!!!
  • tcpdump的常见方法
  • 工控主板ESM7000/6800E支持远程桌面控制
  • wamp php7.4 运行dm8
  • HTML5 进度条(Progress Bar)详解
  • LabVIEW开发中常见硬件通讯接口快速识别
  • 高频 SQL 50 题(基础版)_1068. 产品销售分析 I
  • 笔记:一次mysql主从复制延迟高的处理尝试
  • 基于C语言的卡丁车管理系统【控制台应用程序】
  • Docker 搭建 Gogs
  • PostgreSQL的备份方式
  • Springboot 3项目整合Knife4j接口文档(接口分组详细教程)
  • 深入解析 Conda 安装的默认依赖包及其作用:conda create安装了哪些包(中英双语)
  • Redis核心技术知识点全集
  • 【Unity3D】ECS入门学习(九)SystemBase
  • 【Triton-ONNX】如何使用 ONNX 模型服务与 Triton 通信执行推理任务上-Triton快速开始
  • CertiK《Hack3d:2024年度安全报告》(附报告全文链接)
  • TIOBE 指数 12 月排行榜公布,VB.Net排行第九
  • 【网络协议】开放式最短路径优先协议OSPF详解(一)
  • 嵌入式Linux驱动开发的基本知识(驱动程序的本质、常见的设备类型、设备号的本质理解、设备实例的注册过程)
  • 爱死机第四季(秘密关卡)4KHDR国语字幕
  • kubelet状态错误报错