由于XMLHTTP采用的是Unicode编码上传数据而一般页面采用的是gb这就造成显示页面时产生乱码而当在获取页面时的XMLHttp返回的是utf编码这就造成了显示产生乱码
解决方法之一就是在PHP文件中显示声明为GB
header("ContentType:text/html;charset=GB");
而对于发送到服务器的中文进行转码
如下
$_POST["content"]=iconv("UTF""gb"$_POST["content"]);
因而这样可以解决乱码问题
方法二是都采用UTF编码这里就不多说了
附测试例程
客户端
<!DOCTYPE HTML PUBLIC "//WC//DTD HTML Transitional//EN">
<html>
<head>
<meta httpequiv="ContentType" content="text/html; charset=gb">
<title>ajax post test</title>
</head>
<body>
<div id="msg"></div>
<script language="javascript">
/**
* 初始化一个xmlhttp对象
*/
function InitAjax()
{
var ajax=false;
try {
ajax = new ActiveXObject("MsxmlXMLHTTP");
} catch (e) {
try {
ajax = new ActiveXObject("MicrosoftXMLHTTP");
} catch (E) {
ajax = false;
}
}
if (!ajax && typeof XMLHttpRequest!=undefined) {
ajax = new XMLHttpRequest();
}
return ajax;
}
//在form 测试页面内有一个表单一个显示的层
function sendData()
{
var msg=documentgetElementById("msg");
var f=documentform;
var c=fcontentvalue;
//接收数据的URL
var url="dispmsgphp";
var poststr="content="+c;
var ajax=InitAjax();
ajaxopen("POST"urltrue);
ajaxsetRequestHeader("ContentType""application/xwwwformurlencoded");
ajaxsend(poststr);
ajaxonreadystatechange=function(){
if(ajaxreadyState== && ajaxstatus==){
alert("I got something");
msginnerHTML=ajaxresponseText;
}
}
}
</script>
<form name=form>
<input type="text" name=content size=>
<input type="button" value="确定" onclick="sendData()"><!我用submit时就出错>
</form>
</body>
</html>
服务器端
<?php
header("ContentType:text/html;charset=GB");
if($_POST[content])
{
$_POST["content"]=iconv("UTF""gb"$_POST["content"]);
print("内容是"$_POST[content]);
}
else
{
print("没有内容发送");
}
?>