Ajax加载json文件,有趣的字符在IE中不起作用

时间:2011-06-12 21:38:50

标签: ajax json special-characters

我遇到了问题。在json格式文件中我有:

,{“id”:“33”,“re”:“Maranhão”},{“id”:“33”,“re”:“Mato Grosso”},{“id”:“33”, “re”:“Mato Grosso do Sul”},{“id”:“33”,“re”:“Minas Gerais”},{“id”:“33”,“re”:“Paraíba”},{ “id”:“33”,“re”:“Paraná”},{“id”:“33”,“re”:“Paro”},{“id”:“33”,“re”:“Pernambuco “},{”id“:”33“,”re“:”Piauí“},{”id“:”33“,”re“:”Rio de Janeiro“},{”id“:”33“, “re”:“Rio Grande do Norte”},{“id”:“33”,“re”:“Rio Grande do Sul”},{“id”:“33”,“re”:“Rondônia”} ,{“id”:“33”,“re”:“Roraima”},{“id”:“33”,“re”:“Santa Catarina”},{“id”:“33”,“re” :“圣保罗”},

FF,Chrome,Safari和Opera没问题。 IE有特殊字符的问题。

经过大量搜索后,似乎有同样问题的人被告知要添加:

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">

这就是我所做的但仍然没有去。这是我的代码。显然它有效。添加以防万一。

function GetRegions(CoID)
{
    var i=0;

    $.ajax({      
        type: "GET",      
        url: "http://localhost/JSONFiles/cregions.json",      
        async: false,      
        dataType: "json",  
        success: function(data){     
            $(data).each(function(){
                if (this.id==CoID)
                {                   
                    if (i==0)
                    {
                        $('#st_Region').find('option').remove(0).end().append('<option value="0">Select Your Region</option>').val('0');                        
                    }               
                    i++;
                    $('#st_Region').append('<option value="'+this.re+'">'+this.re+'</option>');
                };
            });             

            if (i==0)
            {
                $('#st_Region').find('option').remove(0).end().append('<option value="1">No Regions For This Country</option>').val('1');                                   
            };
            i=0;
        }

    });
};

任何帮助都会受到赞赏。谢谢。

2 个答案:

答案 0 :(得分:0)

没看代码,但是你的字符串不是JSON有效的。在开始和结束时修剪逗号并将所有内容包装在[]

[{"id": "33","re": "Maranhão"},{"id": "33","re": "Mato Grosso"},{"id": "33","re": "Mato Grosso do Sul"},{"id": "33","re": "Minas Gerais"},{"id": "33","re": "Paraíba"},{"id": "33","re": "Paraná"},{"id": "33","re": "Paro"},{"id": "33","re": "Pernambuco"},{"id": "33","re": "Piauí"},{"id": "33","re": "Rio de Janeiro"},{"id": "33","re": "Rio Grande do Norte"},{"id": "33","re": "Rio Grande do Sul"},{"id": "33","re": "Rondônia"},{"id": "33","re": "Roraima"},{"id": "33","re": "Santa Catarina"},{"id": "33","re": "São Paulo"}]

答案 1 :(得分:0)

尝试将JSON的内容类型用作"application/json"

此外,添加错误功能并查看错误。这应该直接带你到错误。

error: function(jqXHR, textStatus, errorThrown){
    alert(textStatus);
    // you can add different alert here to check
    alert(errorThrown);
    alert(jqXHR.responseText);
}

另外,为什么要以if blocks结束;?虽然它不会导致错误(因为; 是一个合法的空语句),但它可能会引入undesired features并导致头痛。