【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=[];i     return 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;
}
?>

本文来源:http://www.gdgbn.com/wangyetexiao/28892/