解决编码为gb2312页面ajax交互汉字乱码问题
ajax只支持utf-8格式,不能支持gb2312编码格式,所以经常遇到gb2312的编码的程序使用ajax就出现乱码,刚找到一种解决方案是:
服务器端传送的数据仍是gb2312编码,客户端用js将汉字转变成utf8编码显示在页面
search.php教程 search.htm 高级搜索 高级搜索 学校类型: 全部 小学 初中 学校名称: 请选择学校 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
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;
}
?>










