【www.gdgbn.com--页面特效】
解决编码为gb2312页面ajax交互汉字乱码问题
ajax只支持utf-8格式,不能支持gb2312编码格式,所以经常遇到gb2312的编码的程序使用ajax就出现乱码,刚找到一种解决方案是:
服务器端传送的数据仍是gb2312编码,客户端用js将汉字转变成utf8编码显示在页面
search.php教程
header("content-type: text/html; charset=gb2312");
include "./search.htm";
?>search.htm
高级搜索
高级搜索
<script type="text/网页特效">
function ajax(settings) {
var xhr = window.activexobject ? new activexobject("microsoft.xmlhttp") : new xmlhttprequest(), successed = false;
xhr.open(settings.type, settings.url);
if(settings.type == "post")
xhr.setrequestheader("content-type", "application/x-www-form-urlencoded");
xhr.send((!settings.cache ? "time=" + new date().gettime() + "&" : "") + settings.data);
settings.loader();
settimeout(function() {
if(!successed) {
alert("resquest timeout!");
xhr.abort();
}
}, settings.timeout);
xhr.onreadystatechange = function() {
if (xhr.readystate == 4 && xhr.status == 200) {
settings.callback(xhr.responsetext.replace(/(^s*)|(s*$)/g, ""));
}
successed = true;
}
}
function a(t) {
ajax({
type: "post",
url: "ajax.php",
data: "schooltype=" + t,
timeout: 8000,
cache: true,
loader: function() {},
callback: function(d) {
var arr = eval(d);
if(typeof(arr) == "object") {
var obj, option;
document.getelementbyid("sid").innerhtml = "";
for(var i = 0; obj = arr; i ++) {
option = document.createelement("option");
option.value = obj[0];
option.innerhtml = txt2utf8(obj[1], "");
document.getelementbyid("sid").appendchild(option);
}
}
}
})
}
function txt2utf8(string, prefix){
for(var i=0,utf8=[];ireturn utf8.join("");
}
a(0);
</script>
ajax.php
header("content-type: text/html; charset=gb2312");
$schooltype = !empty($_post["schooltype"]) ? $_post["schooltype"] : 0;
switch($schooltype) {
case 0:
echo "[["40", "太平溪镇花栗包完全小学"],["41", "太平溪镇长岭黑龙江希望小学"],["42", "乐天溪镇初级中学"],["43", "乐天溪镇莲沱初级中学"]]";
break;
case 1:
echo "[["40", "太平溪镇花栗包完全小学"],["41", "太平溪镇长岭黑龙江希望小学"]]";
break;
case 2:
echo "[["42", "乐天溪镇初级中学"],["43", "乐天溪镇莲沱初级中学"]]";
break;
default:
break;
}
?>