XMLHTTPはデータアップロードにUnicodeエンコーディングを使用しており、一般的なページではgb2312を使用しているため、ページ表示時に文字化けが発生します。ページを取得する際、XMLHttp は UTF-8 エンコーディングを返すため、表示が文字化けします。
解決策の 1 つは、PHP ファイルで宣言を GB2312 として表示することです
header("Content-Type:text/html;charset=GB2312");
そしてサーバーに送信された中国語をトランスコードします。
以下の通り
$_POST["コンテンツ"]=iconv("UTF-8","gb2312",$_POST["コンテンツ"]);
これで文字化け問題も解決できます
方法 2 は、UTF-8 エンコーディングを使用することです。ここではあまり言うことはありません
添付のテストルーチン
クライアント
<頭>
ajax ポストテスト
<スクリプト言語="javascript">
/**
* xmlhttp オブジェクトを初期化します
*/
関数 InitAjax()
{
var ajax=false;
{
を試してください
ajax = 新しい ActiveXObject("Msxml2.XMLHTTP");
} キャッチ (e) {
{
を試してください
ajax = 新しい ActiveXObject("Microsoft.XMLHTTP")
} キャッチ (E) {
ajax = false
}
}
if (!ajax && XMLHttpRequest のタイプ!='未定義') {
ajax = 新しい XMLHttpRequest();
}
ajax を返します;
}
//フォームテストページにはフォームと表示レイヤーがあります
関数sendData()
{
var msg=document.getElementById("msg");
var f=document.form1;
var c=f.content.value;
//データを受け取るURL
var url="dispmsg.php";
var poststr="content="+c;
var ajax=InitAjax();
ajax.open("POST",url,true);
ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
ajax.send(poststr);
ajax.onreadystatechange=function(){
If(ajax.readyState==4 && ajax.status==200){
alert("何かを入手しました");
msg.innerHTML=ajax.responseText;
}
}
}
スクリプト>
<フォーム名='form1'>
フォーム>