asp+ajax 出现乱码如何解决?

来得查理 2009-09-22 11:43:49

index.asp
<%@LANGUAGE="VBSCRIPT.Encode" CODEPAGE="65001"%>
<%

Db="data/test12.mdb"
ConnStr = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath(Db)
On Error Resume Next
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open ConnStr

function getBigClass()
dim sql
sql = "select * from BigClass"
set rs = server.CreateObject("adodb.Recordset")
rs.open sql,conn,1,3
do while not rs.eof
BigClass= BigClass&"<option value='"&rs("BigClassId")&"'>"&rs("BigClassName")&"</option>"
rs.movenext
loop
Response.Write BigClass
End function
%>

<script>
function sendajax(BigClassId)
{
var ajaxObj;
var values;
if(window.XMLHttpRequest){
ajaxObj = new XMLHttpRequest();
} else if(window.ActiveXObject){
ajaxObj = new ActiveXObject("Microsoft.XMLHTTP");
}
if(ajaxObj){
//alert("创建ajax成功!");

}

ajaxObj.open("GET","getSmallClass.asp?BigClassId="+BigClassId,true);
ajaxObj.onreadystatechange = function(){
if(ajaxObj.readyState==4){
if(ajaxObj.status==200)
{
var txt = ajaxObj.responseText
document.getElementById("t").innerHTML=txt;
}
}

}
ajaxObj.send(null);
}
</script>

<div>
<select id="BigClass" onchange="sendajax(this.options[selectedIndex].value)">
<%
Call getBigClass()
%>
</select>

<select id="SmallClass">
</select>

</div>

<span id="t"></span>


getSmallClass.asp



<%@LANGUAGE="VBSCRIPT.Encode" CODEPAGE="65001"%>
<% Db="data/test12.mdb"
ConnStr = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath(Db)
On Error Resume Next
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open ConnStr

BigClassId = request("BigClassId")

set rs = server.CreateObject("adodb.recordset")
rs.open "select * from SmallClass where BigClassId="&BigClassId,conn,1,3

do while not rs.eof
SmallClassStr = SmallClassStr&rs("SmallClassId")&","&rs("SmallClassName")&"|"
rs.movenext
loop
Response.Write SmallClassStr
rs.close
set rs = nothing
%>

...全文
503 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Go 旅城通票 2009-09-24
  • 打赏
  • 举报
回复
ajax问题总结

看乱码部分
lwlfree 2009-09-24
  • 打赏
  • 举报
回复
用URL编码传输数据,得到数据后解码即可。
至于页面上出现乱码,有可能是文件保存时所选择的编码格式与页面中声明的编码格式有冲突。
sumjor 2009-09-24
  • 打赏
  • 举报
回复
编码没有统一吧
xj150145223 2009-09-24
  • 打赏
  • 举报
回复
如果你代码里面的编码都统一,那么试着将文件 “高级保存”--“UTF-8代签名”
xiaofan_sap 2009-09-24
  • 打赏
  • 举报
回复
CODEPAGE="65001"?
应该是编码问题,你把编码都统一了就ok了
hookee 2009-09-22
  • 打赏
  • 举报
回复
试试看
getSmallClass.asp文件本身 存为 utf-8编码。 用Windows记事本打开,另存为,编码选utf-8
-----------
或者
ie的话


var txt = gb2utf8(ajaxObj.responseBody)

function gb2utf8(data){
var glbEncode = [];
gb2utf8_data = data;
execScript("gb2utf8_data = MidB(gb2utf8_data, 1)", "VBScript");
var t=escape(gb2utf8_data).replace(/%u/g,"").replace(/(.{2})(.{2})/g,"%$2%$1").replace(/%([A-Z].)%(.{2})/g,"@$1$2");
t=t.split("@");
var i=0,j=t.length,k;
while(++i<j) {
k=t[i].substring(0,4);
if(!glbEncode[k])
{
gb2utf8_char = eval("0x"+k);
execScript("gb2utf8_char = Chr(gb2utf8_char)", "VBScript");
glbEncode[k]=escape(gb2utf8_char).substring(1,6);
}
t[i]=glbEncode[k]+t[i].substring(4);
}
gb2utf8_data = gb2utf8_char = null;
return unescape(t.join("%"));
}

52,797

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 Ajax
社区管理员
  • Ajax
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧