簡體   English   中英

我的javascript適用於IE8的每個瀏覽器

[英]My javascript works in every browser but IE8

每個瀏覽器,我的意思是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會成為唯一一個遇到此問題的瀏覽器? 我知道正在饋送的數據不是空的,因為相同的數據用於在地圖上放置對象並且它們顯示得很好。

我懷疑eval()函數沒有返回你期望的結果。

您可能想嘗試使用JSON.parse。

您可以在那里找到一個解析器用於沒有JSON原生支持的瀏覽器。

問題很可能是data.responseText可能在某處有一個尾隨逗號。

[
    "A", "B", "C",
]

這不適用於Internet Explorer,也不是有效的JSON。 所有其他瀏覽器都處理尾隨逗號。

修復:更改您的AJAX結束點以省略所有尾隨逗號。

更好的解決方法:使用JSON.parse ,它會轟炸無效的JSON,這樣所有瀏覽器都會因失敗而表現相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM