Ajax загружает файл json с забавными символами, не работающими в IE - PullRequest
0 голосов
/ 13 июня 2011

У меня проблемы с т.е. В формате 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 голосов
/ 13 июня 2011

Попробуйте использовать тип контента для 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 и вызвать головную боль.

0 голосов
/ 13 июня 2011

Не посмотрел код, но ваша строка недопустима в формате 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"}]
...