每个浏览器都是Safari,Firefox,Chrome和IE9。
以下是我在IE8控制台中遇到的错误:
'data.cities[...].country' is null or not an object
第374行,低于(var country = k.data.cities[i].country;
):
downloadUrl(url, function(data) {
var k = eval("(" + data.responseText + ")");
var klength = k.data.cities.length;
var countries = [];
for(i=0; i < klength; i++) {
var country = k.data.cities[i].country;
countries.push(country);
}
countries = $.unique(countries);
var countryLength = countries.length;
for(i=0; i < countryLength; i++) {
$('.ribbon').append('<a href="#" class="country '+ countries[i] +'">' + countries[i] + '</a>');
}
});
为什么IE8会成为唯一一个遇到此问题的浏览器?我知道正在馈送的数据不是空的,因为相同的数据用于在地图上放置对象并且它们显示得很好。
答案 0 :(得分:2)
答案 1 :(得分:1)
问题很可能是data.responseText
可能在某处有一个尾随逗号。
[
"A", "B", "C",
]
这不适用于Internet Explorer,也不是有效的JSON。所有其他浏览器都会处理尾随逗号。
修复:更改您的AJAX结束点以省略所有尾随逗号。
更好的解决方法:使用JSON.parse
炸弹无效的JSON,以便所有浏览器都失败时表现相同。