JQuery пунктуация для испанского языка (ó, í и т. Д.) Не работает в IE8 - PullRequest
2 голосов
/ 09 апреля 2010

Я работаю с jquery и ASP, и у меня есть база данных SQL, из которой я получаю, используя функцию $ .getJSON (), некоторые описания на испанском языке с "acentos" и "tildes" (á, é, í, ó, ú, ñ и т. д.).

С Chrome 4 и FireFox работает нормально. Проблема в IE8: при каком-то конкретном запросе он зависает, не возвращая результат. Если я заменю все «ó» на «o» с помощью IE, тот же набор результатов будет работать идеально, поэтому я знаю, что проблема в «acentos» (ó).

Я устанавливаю вызов ajax с этим кодом:

$.ajaxSetup({'beforeSend' : function(xhr) {
            if (xhr.overrideMimeType) {
        //FF & Chrome
               xhr.overrideMimeType('text/html; charset=iso-8859-1');
            }else {
               //IE8
               //I tried everything here:
               //xhr = new ActiveXObject("Microsoft.XMLHTTP");
               //var obj = new ActiveXObject("MSXML2.XMLHTTP.3.0");
               //xhr = new ActiveXObject("Msxml2.XMLHTTP");

               //and get ERROR with IE8 in this line:
               xhr.setRequestHeader('Content-type', 'text/html; charset=iso-8859-1');
            }
                                          }
});

И затем вызов getJSON () для получения описаний с "acentos" выглядит так:

function showDialog(idCriterio, codAplica, descTema){

$("#dialog-modal").html("Buscando Datos...");//getting data...

$.getJSON("generarJSONTipos.asp", { idCriterio: idCriterio, codAplica: codAplica}, 

  //callback function
  function(data){
    var textoDialogo;
    textoDialogo= "";

    $("#dialog-modal").html("<span class='tituloOpcion'>"+descTema+"</span><br><br>");

    for(i=0;i<data.length;i++) {
      //tomo el html actual
      textoDialogo = $("#dialog-modal").html();
     //le apendo la descripcion del elemento del array
     $("#dialog-modal").html(textoDialogo + data[i].descripcion + "<br>");
      }//end for
                 }//end callback
     );//end getJSON

$("#dialog-modal").dialog({
   height: 300,
   width:450,
   modal: true
  });

$("#dialog-modal").dialog('open');
}

Любые подсказки будут оценены. Я гуглил несколько дней, не доходя до ответа на этот вопрос ...: P

Заранее спасибо, Игнасио (Ла-Плата, Аргентина)

1 Ответ

3 голосов
/ 16 апреля 2010

Ответ был очень прост, но мне потребовалось несколько дней, чтобы обнаружить. Я делюсь этим здесь, для всех, у кого такая же проблема.

Решение состоит в том, чтобы указать тип содержимого прямо в объекте ответа (ASP) или с помощью функции заголовка в PHP:

ASP

Response.ContentType="text/html; charset=iso-8859-1"

PHP

header("text/html; charset=iso-8859-1");

Это должна быть первая строка ответа (я думаю) в файле, который генерирует объекты JSON. Любые комментарии будут оценены.

Спасибо!

Игнасио (Ла-Плата, Аргентина)

...