getJSON
是 jQuery 提供的一个简便方法,用于通过 HTTP GET 请求从服务器加载 JSON 编码的数据。它是 $.ajax()
的一个简化形式,专门用于处理 JSON 数据。
IE8 中存在几个关键问题会导致 getJSON
无法正常工作:
JSON.parse()
方法,而 getJSON
依赖此方法来解析返回的 JSON 数据。<!-- 在引入 jQuery 之前添加 JSON2.js 以支持 JSON 解析 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/json2/20160511/json2.min.js"></script>
<script src="jquery-1.12.4.min.js"></script>
<!-- 使用 jQuery 1.x 最后一个版本 -->
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
// 原始可能不工作的代码
$.getJSON('data.json', function(data) {
console.log(data);
});
// 修改为兼容 IE8 的写法
$.ajax({
url: 'data.json',
dataType: 'json',
cache: false, // 防止 IE8 缓存
success: function(data) {
console.log(data);
},
error: function(xhr, status, error) {
console.error("Error:", status, error);
}
});
如果是跨域请求,需要服务端支持 JSONP 或 CORS:
// JSONP 方式
$.ajax({
url: 'http://example.com/data',
dataType: 'jsonp',
jsonp: 'callback',
success: function(data) {
console.log(data);
}
});
<!DOCTYPE html>
<html>
<head>
<title>IE8 getJSON 兼容示例</title>
<!-- 添加 JSON 支持 -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/json2/20160511/json2.min.js"></script>
<!-- 使用兼容的 jQuery 版本 -->
<script src="https://code.jquery.com/jquery-1.12.4.min.js"></script>
<script>
$(document).ready(function() {
// 兼容 IE8 的 AJAX 请求
$.ajax({
url: 'data.json',
dataType: 'json',
cache: false,
success: function(data) {
$('#result').text(JSON.stringify(data));
},
error: function(xhr, status, error) {
$('#result').text('Error: ' + status + ' - ' + error);
}
});
});
</script>
</head>
<body>
<div id="result">Loading data...</div>
</body>
</html>
application/json
)通过以上方法,应该可以解决 IE8 中 getJSON
不工作的问题。