You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

为何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

火山引擎 最新活动