$.getJSON无法返回JSON格式,请求报错parsererror排查求助
解决$.getJSON调用JSON文件时的parsererror问题
我之前也踩过一模一样的坑!这个报错的核心原因很明确:你请求的recipes.json返回的根本不是合法的JSON内容,而是HTML(大概率是服务器的404错误页面)——JSON解析器一看到开头的<符号直接就懵了。下面是我当时排查解决的几个关键步骤:
先直接验证请求URL的返回内容
打开浏览器,直接访问http://localhost:1337/recipes.json,看看页面显示的是什么:- 如果弹出404页面(满是HTML标签),那肯定是文件路径不对:
- 确认你的Web服务器根目录位置,
recipes.json必须放在这个根目录下,而不是你的项目源码目录里。比如你用http-server启动的话,启动命令所在的文件夹就是根目录。 - 检查文件名拼写:注意大小写(比如Linux/macOS环境下
Recipes.json和recipes.json是两个不同的文件)、后缀是不是.json(别写成.js或者.txt了)。
- 确认你的Web服务器根目录位置,
- 如果弹出404页面(满是HTML标签),那肯定是文件路径不对:
检查服务器的MIME类型配置
有些简易Web服务器默认不会正确设置.json文件的响应头,导致浏览器把它当成HTML解析:- 打开浏览器开发者工具的「网络」标签,重新发起请求,查看
recipes.json的响应头,确认Content-Type是不是application/json。 - 如果是自己手写的服务器代码,要确保返回
.json文件时设置了res.setHeader('Content-Type', 'application/json');这类响应头。
- 打开浏览器开发者工具的「网络」标签,重新发起请求,查看
兜底检查代码细节
虽然你说已经验证过JS代码完整性,但还是可以再确认下:- 变量
recipesLoc是不是真的正确赋值为http://localhost:1337/recipes.json?有没有多余的空格或者拼写错误? $.getJSON的回调里有没有其他可能干扰的代码?比如有没有提前修改了响应内容?
- 变量
内容的提问来源于stack exchange,提问作者Kyle
相关产品推荐
相关产品推荐

