【 tulaoshi.com - Web开发 】
网页制作Webjx文章简介:AJAX可用来与数据库进行动态地通信。
AJAX可用来与数据库进行动态地通信。
AJAX数据库实例
在下面的AJAX例子中,我们将演示如何使用AJAX技术令网页从数据库读取信息。
在下面的框中选择一个名字
请选择一位客户:AlfredsFutterkisteNorth/SouthWolskiZajazd
AJAX实例解释
上面的实例包含了一个简单的HTML表单以及执行JavaScript的链接:
html
head
scriptsrc="selectcustomer.js"/script
/head
body
form
请选择一位客户:
selectname="customers"onchange="showCustomer(this.value)"
optionvalue="ALFKI"AlfredsFutterkiste
optionvalue="NORTS"North/South
optionvalue="WOLZA"WolskiZajazd
/select
/form
p
divid="txtHint"b客户信息将在此处列出。/b/div
/p
/body
/html
正如您看到的,这是一个简单的带有一个名为"customers"下拉列表的HTML表单。
表单以下的段落包含了一个名为"txtHint"的div,这个div充当了由web服务器所取回的信息的位置占位符。
当用户选择数据时,名为"showCustomer()"的函数会被执行。函数的执行会被"onchange"事件触发。另外需要说明的是:每当用户改变下拉列表中的值,函数showCustomer就会被调用。
下面列出了JavaScript代码。
AJAXJavaScript
这是存储在文件"selectcustomer.js"中的JavaScript代码:
varxmlHttp
functionshowCustomer(str)
{
xmlHttp=GetXmlHttpObject();
if(xmlHttp==null)
{
alert("您的浏览器不支持AJAX!");
return;
}
varurl="getcustomer.asp";
url=url+"?q="+str;
url=url+"&sid="+Math.random();
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET",url,true);
xmlHttp.send(null);
}
functionstateChanged()
{
if(xmlHttp.readyState==4)
{
document.getElementById("txtHint").innerHTML=xmlHttp.responseText;
}
}
functionGetXmlHttpObject()
{
varxmlHttp=null;
try
{
//Firefox,Opera8.0+,Safari
xmlHttp=newXMLHttpRequest();
}
catch(e)
{
//InternetExplorer
try
{
xmlHttp=newActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
xmlHttp=newActiveXObject("Microsoft.XMLHTTP");
}
}
returnxmlHttp;
}AJAX服务器页面
这个被JavaScript调用的服务器页面,是一个名为"getcustomer.asp"的简单的ASP文件。
此页面使用VBScript针对IIS编写。可以使用PHP或其他服务器语言对它进行改写。
此代码可运行针对某个数据库的SQL,并以HTML表格返回结果:
%
response.expires=-1
sql="SELECT*FROMCUSTOMERSWHERECUSTOMERID="
sql=sql&"'"&request.querystring("q")&"'"
setconn=Server.CreateObject("ADODB.Connection")
conn.Provider="Microsoft.Jet.OLEDB.4.0"
conn.Open(Server.Mappath("/db/northwind.mdb"))
setrs=Server.CreateObject("ADODB.recordset")
rs.Opensql,conn
response.write("table")
dountilrs.EOF
foreachxinrs.Fields
response.write("trtdem"&x.name&"/em/td")
response.write("td"&x.value&"/td/tr")
next
rs.MoveNext
loop
response.write("/table")
%