上一篇
场景引入:
凌晨3点,你盯着屏幕上的红色error提示,咖啡杯已经空了第三轮,明明后端返回了JSON数据,但AJAX死活不进success
,反而跳进error
;或者更诡异——数据收到了,但解析时却报错SyntaxError: Unexpected token
… 别慌!这篇指南就是你的深夜救星 💡
典型症状:
Unexpected token < in JSON at position 0
Content-Type: text/html
而非 application/json
检查响应头
用浏览器开发者工具(F12 → Network),确认响应头包含:
Content-Type: application/json; charset=utf-8
❌ 如果看到 text/html
,说明后端未正确设置响应头!
强制指定dataType
在AJAX请求中显式声明数据类型:
$.ajax({ url: '/api/data', dataType: 'json', // 强制解析为JSON success: function(data) { /*...*/ }, error: function(xhr) { console.log(xhr.responseText); } });
验证JSON格式
后端返回的必须是严格JSON!常见陷阱:
/* 测试数据 */
{ "name": "Alice", }
{'name': 'Bob'}
→ 必须用双引号! 典型症状:
xhr.responseText
里能看到 error
回调 检查HTTP状态码范围
jQuery等库默认认为非2xx状态码为错误:
$.ajax({ statusCode: { 404: function() { alert("页面不存在"); }, 500: function() { alert("服务器炸了💥"); } } });
跨域问题(CORS)
如果接口跨域,需满足:
Access-Control-Allow-Origin: *
$.ajax({ xhrFields: { withCredentials: true }, crossDomain: true });
JSONP陷阱
使用JSONP时,确保回调函数名合法且后端支持:
$.ajax({ url: 'https://api.example.com?callback=?', dataType: 'jsonp' // 注意不是json! });
responseText
到[jsonlint.com]验证格式 深夜程序员安慰奖 🌙
“代码没有错,只是你和计算机的理解暂时没对齐。”
—— 某次调试AJAX到天亮后的顿悟
遇到问题?深呼吸,按步骤排查,你一定能搞定! 🚀
本文由 星贞韵 于2025-08-01发表在【云服务器提供商】,文中图片由(星贞韵)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/502439.html
发表评论