本例将演示AJAX+ASP+ACCESS的组合应用,全示例演示地址:
AJAX_demo2/index.html" target=_blank>http://www.alixixi.com/AJAX_demo2/index.html
本示例经过本人修改getcustomer.asp源代码,最终解决了最头疼的AJAX返回中文数据出现乱码的问题..
下面为示例源码文件:
'1,index.html
<html>
<head>
<title>阿里西西-AJAX-应用示例2</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<script src="selectcustomer.js"></script>
</head><body><form>
请选择用户:
<select name="customers" οnchange="showCustomer(this.value)">
<option value="1">阿里西西</option>
<option value="2">80端口</option>
<option value="3">FM</option>
</select>
</form><p>
<div id="txtHint"><b>用户信息...</b></div>
</p></body>
</html>
'2,getcustomer.asp
<%
sql="SELECT * FROM CUSTOMERS WHERE CUSTOMERID="
sql=sql & request.querystring("q")
set conn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open(Server.Mappath("db/northwind.mdb"))
set rs = Server.CreateObject("ADODB.recordset")
rs.Open sql, conn
Response.ContentType = "text/xml"
Response.CharSet = "GB2312"
Dim varCount,varReq,xmldom
varCount = Request.TotalBytes
varReq = Request.BinaryRead(varCount)
If Request.ServerVariables("REQUEST_METHOD") = "POST" Then
Set xmldom = Server.CreateObject("MSXML2.DOMDocument")
xmldom.load varReq
Response.Write "<?xml version=""1.0"" encoding=""GB2312""?>" & xmldom.documentElement.xml
Else
response.write("<table>")
do until rs.EOF
for each x in rs.Fields
response.write("<tr><td><b>" & x.name & "</b></td>")
response.write("<td>" & x.value & "</td></tr>")
next
rs.MoveNext
loop
response.write("</table>")
End If
%>
'3,selectcustomer.js
var xmlHttp
function showCustomer(str)
{
var url="getcustomer.asp?sid=" + Math.random() + "&q=" + str
xmlHttp=GetXmlHttpObject(stateChanged)
xmlHttp.open("GET", url , true)
xmlHttp.send(null)
}
function stateChanged()
{
if (xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
{
document.getElementById("txtHint").innerHTML=xmlHttp.responseText
}
}
function GetXmlHttpObject(handler)
{
var objXmlHttp=null
if (navigator.userAgent.indexOf("Opera")>=0)
{
alert("This example doesn't work in Opera")
return;
}
if (navigator.userAgent.indexOf("MSIE")>=0)
{
var strName="Msxml2.XMLHTTP"
if (navigator.appVersion.indexOf("MSIE 5.5")>=0)
{
strName="Microsoft.XMLHTTP"
}
try
{
objXmlHttp=new ActiveXObject(strName)
objXmlHttp.onreadystatechange=handler
return objXmlHttp
}
catch(e)
{
alert("Error. Scripting for ActiveX might be disabled")
return
}
}
if (navigator.userAgent.indexOf("Mozilla")>=0)
{
objXmlHttp=new XMLHttpRequest()
objXmlHttp.οnlοad=handler
objXmlHttp.οnerrοr=handler
return objXmlHttp
}
}
'4,数据库格式
库名:northwind.mdb
表名: Customers
字段:
CustomerID 自动编号
Name 文本
NL 数字
Address