2

私は jquery と ASP を使用しており、関数 $.getJSON() を使用して、「acentos」と「tildes」を使用したスペイン語の説明 (á、é、í、ó、ú、ñ) を取得する SQL データベースを持っていますなど)。

Chrome 4 と FireFox では問題なく動作しています。問題は IE8 にあります。特定のクエリで、結果を返さずにハングします。IEを使用してすべての「ó」を「o」に置き換えると、同じ結果セットが完全に機能するため、問題は「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');
            }
                                          }
});

そして、「acentos」で説明を取得するための getJSON() の呼び出しは次のようになります。

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

前もって感謝します, イグナシオ (ラプラタ, アルゼンチン)

4

1 に答える 1

3

答えはとてもシンプルでしたが、発見するのに数日かかりました。同じ問題を抱えているすべての人のために、ここで共有します。

解決策は、コンテンツのタイプを応答オブジェクト (ASP) で直接指定するか、PHP のヘッダー関数を使用して指定することです。

ASP

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

PHP

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

これは、JSON オブジェクトを生成するファイルの応答の最初の行である必要があります (私はそう思います)。コメントをお待ちしております。

ありがとうございました!

イグナシオ(ラプラタ、アルゼンチン)

于 2010-04-16T14:12:13.897 に答える