gb2312としてエンコードされたページでのAjaxインタラクションでの中国語文字化けの問題を解決します
Ajax は utf-8 形式のみをサポートし、gb2312 エンコード形式をサポートできないため、ajax を使用して gb2312 エンコード プログラムを使用すると文字化けが頻繁に発生します。
サーバーによって送信されるデータは依然としてgb2312でエンコードされており、クライアントはjsを使用して漢字をutf8エンコードに変換し、ページに表示します
search.php チュートリアル
header("コンテンツタイプ: text/html; charset=gb2312");
'./search.htm' を含めます;
?>search.htm
<頭>
高度な検索
高度な検索
<フォームメソッド="ポスト"アクション="">
学校の種類:
<名前=「学校タイプ」を選択>
選択>
学校名:
<名前="sid" id="sid"を選択>
選択>
フォーム>
<スクリプト タイプ="テキスト/ウェブページの特殊効果">
関数 ajax(設定) {
var xhr = window.activexobject ? new activexobject("microsoft.xmlhttp") : new xmlhttprequest()、成功 = false;
xhr.open(設定.タイプ, 設定.url);
If(settings.type == 'post')
xhr.setrequestheader('content-type', 'application/x-www-form-urlencoded');
xhr.send((!settings.cache ? 'time=' + new date().gettime() + '&' : '') + settings.data);
設定.loader();
settimeout(function() {
if(!successed) {
alert('リクエストタイムアウト!');
xhr.abort();
}
}, settings.timeout);
xhr.onreadystatechange = function() {
If (xhr.readystate == 4 && xhr.status == 200) {
settings.callback(xhr.responsetext.replace(/(^s*)|(s*$)/g, ""));
}
成功 = true;
}
}
関数 a(t) {
ajax({
タイプ: '投稿'、
URL: 'ajax.php',
データ: 'schooltype=' + t,
タイムアウト: 8000、
キャッシュ: true、
ローダー: function() {},
コールバック: function(d) {
var arr = eval(d);
If(typeof(arr) == 'オブジェクト') {
var obj、オプション;
Document.getelementbyid('sid').innerhtml = '';
for(var i = 0; obj = arr; i ++) {
オプション = document.createelement('オプション');
option.value = obj[0];
option.innerhtml = txt2utf8(obj[1], '');
Document.getelementbyid('sid').appendchild(オプション);
}
}
}
})
}
関数 txt2utf8(文字列, プレフィックス){
for(var i=0,utf8=[];iutf8.join('');
を返します }
a(0);
スクリプト>