$.getJSON()
是 jQuery 提供的一个简化方法,用于通过 HTTP GET 请求从服务器加载 JSON 编码的数据。它是 $.ajax()
方法的简写形式,专门用于处理 JSON 数据。
当使用 $.getJSON()
时,服务器返回的响应有内容大小(Content-Length 不为零),但实际响应体为空,导致无法解析 JSON 数据。
原因:服务器可能没有正确设置 Content-Type: application/json
头。
解决方案:
$.ajax({
url: 'your_url',
dataType: 'json',
success: function(data) {
console.log(data);
},
error: function(xhr, status, error) {
console.error("Error:", status, error);
}
});
原因:返回的数据不是有效的 JSON 格式。
解决方案:
$.get()
获取原始文本,再手动解析:$.get('your_url', function(responseText) {
try {
var data = JSON.parse(responseText);
console.log(data);
} catch (e) {
console.error("Invalid JSON:", e);
}
});
原因:请求跨域且服务器未正确配置 CORS。
解决方案:
$.getJSON('your_url?callback=?', function(data) {
console.log(data);
});
原因:服务器可能返回了 HTTP 200 状态码但实际上有错误。
解决方案:
原因:浏览器可能缓存了空响应。
解决方案:
$.ajax({
url: 'your_url',
dataType: 'json',
cache: false,
success: function(data) {
console.log(data);
}
});
原因:服务器可能启用了压缩但客户端无法正确处理。
解决方案:
Content-Encoding
头Content-Type
通过以上方法,您应该能够诊断并解决 $.getJSON()
返回空体的问题。
没有搜到相关的沙龙