为何JSON突然失效?换电脑后网站报JSON解析错误无法加载数据
解决迁移电脑后JSON解析错误的问题
这个Unexpected token < in JSON错误我太熟了,本质就是你前端想解析成JSON的内容根本不是合法的JSON,而是HTML代码(比如服务器返回的404页面、错误提示页,甚至是你的主页)——毕竟HTML的开头就是<,自然会让JSON.parse()直接报错。
结合你迁移电脑的场景,大概率是环境配置或者接口路径出了问题,给你一步步排查的思路:
- 先确认请求返回的到底是什么:打开浏览器开发者工具(按F12),切换到「Network」标签,触发
#agent的change事件,找到对应的接口请求,查看「Response」面板里的内容。如果显示的是HTML代码(比如<html>开头),那问题就找到了——你请求的地址不对,或者后端没返回正确的JSON。 - 检查接口路径是否匹配新环境:迁移电脑后,可能本地后端服务的端口、域名变了(比如原来用8080,现在新电脑上服务跑在8081),或者你代码里写死了旧的接口地址(比如
http://localhost:8080/api/getData),导致请求到了错误的地址,返回的是页面而不是数据。 - 确认后端服务是否正常启动:新电脑上有没有把后端服务正确跑起来?如果后端没启动,前端请求会得到服务器的错误页面,自然无法解析成JSON。
- 同步本地代理/环境配置:如果原来的项目用了代理(比如Vue的proxy配置、Webpack的devServer代理),迁移后有没有把这些配置文件同步过来?没有代理的话,可能前端请求跨域,或者后端返回了错误提示的HTML。
给你一个临时调试的小技巧,在解析JSON前先打印内容,方便定位:
$(document).on('change', "#agent", function(event) { var IEX_ID=$(this).val(); // 假设你是用ajax请求数据,修改成这样 $.ajax({ url: '你的接口地址', // 这里要确认地址是否正确 data: { iexId: IEX_ID }, success: function(rawResponse) { console.log('原始返回内容:', rawResponse); // 打印出来看是不是HTML try { var data = JSON.parse(rawResponse); // 原来加载数据到div的逻辑 $('#targetDiv').html(data.content); } catch(err) { console.error('解析JSON失败:', err); } }, error: function(xhr) { console.log('请求错误,状态码:', xhr.status); console.log('错误返回内容:', xhr.responseText); } }); });
先按这个思路排查,基本能找到问题所在。
内容的提问来源于stack exchange,提问作者Malsum




