Ajax,其实更应该说它是一种方法,因为它由几种技术以新的方式组合而形成的。使用它可以构建更为动态和响应更灵敏的Web应用程序。该方法的关键在于对浏览器端的JavaScript、DHTML和与服务器异步通信的组合。
;-Os~81o? 利用一个Ajax框架构造一个应用程序,它直接从浏览器与后端服务进行通信。如果使用得当,这种强大的力量可以使应用程序更加自然和响应灵敏,从而提升用户的浏览体验。它使浏览器可以为用户提供更为自然的浏览体验。在Ajax之前,Web站点强制用户进入提交/等待/重新显示范例。Ajax提供与服务器异步通信的能力,从而使用户从请求/响应的循环中解脱出来。借助于Ajax,可以在用户单击按钮时,使用JavaScript和DHTML立即更新UI,并向服务器发出异步请求,以执行更新或查询数据库。当请求返回时,就可以使用JavaScript和CSS来相应地更新UI,而不是刷新整个页面。最重要的是,用户甚至不知道浏览器正在与服务器通信。Ajax所需的基础架构已经出现了一段时间,但直到最近BackPack/Google Suggest/Google Maps/PalmSphere这些大型站点开始使用后,异步请求的真正威力才得到利用。因为它最终允许开发人员和设计人员使用标准的HTML/CSS/JavaScript堆栈创建“桌面风格的(desktop-like)”可用性。
DO-M0L a73VDQr I Ajax的核心是JavaScript对象XmlHttpRequest。它是一种支持异步请求的技术。简单的说,XmlHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。
.m8l\h^3 KnA BFH 下面给出一段极其简单的代码供大家参考
@ NL<v-t 2)\MxvfOh { pQJ.QI - <%
- Response.Buffer = True
- Response.ExpiresAbsolute = Now() - 1
- Response.Expires = 0
- Response.CacheControl = "no-cache"
- Response.AddHeader "Pragma", "No-Cache"
- on error resume next
- '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
- 'AJAX方法测试
- '作者:y3gu - 2006-7-16
- '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
- db_path = "db1.mdb" rem 数据库文件路径
- Set conn= Server.CreateObject("ADODB.Connection")
- connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath(db_path)
- conn.Open connstr
- Function CloseDatabase
- Conn.close
- Set conn = Nothing
- End Function
- Function SqlEncode(Texts) rem 本段代码意在过滤SQL查询
- if not isnull(Texts) then
- Texts = Replace(Texts, "%", "%")
- Texts = Replace(Texts, "'", "'")
- Texts = Replace(Texts, "(", "(")
- Texts = Replace(Texts, ")", ")")
- Texts = Replace(Texts, "*", "*")
- Texts = Replace(Texts, "=", "=")
- Texts = Replace(Texts, "?", "?")
- Texts = replace(Texts, ">", ">")
- Texts = replace(Texts, "<", "<")
- SqlEncode = Texts
- End if
- End Function
- Select Case Request.QueryString("Action")
- Case "Cheak"
- name=request.querystring("name")
- If SqlEncode(name)=request.querystring("name") Then
- Set rs = Server.CreateObject ("ADODB.Recordset")
- sql = "Select * from [数据表] where [字段]='"&name&"'"
- rs.Open sql,conn,1,1
- if rs.eof and rs.bof then
- response.write("true")
- else
- response.write("false")
- end if
- rs.close
- set rs=nothing
- call CloseDatabase
- Else
- response.write("false")
- End If
- Case ""
- %>
- <script language="javascript" type="text/javascript">
- var xmlHttp = false;
- try {
- xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
- } catch (e) {
- try {
- xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
- } catch (e2) {
- xmlHttp = false;
- }
- }
- if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
- xmlHttp = new XMLHttpRequest();
- }
- function cheakname() {
- var username = document.getElementById("username").value;
- if ((username == null) || (username == "")) return;
- var url = "Test.asp?Action=Cheak&name=" + escape(username);
- xmlHttp.open("GET", url, true);
- xmlHttp.onreadystatechange = updatePage;
- xmlHttp.send(null);
- }
- function updatePage() {
- if (xmlHttp.readyState < 4) {
- ajaxmessage.innerHTML="正在检查用户名";
- }
- if (xmlHttp.readyState == 4) {
- var reinfo = xmlHttp.responseText;
- if (reinfo=="true") {
- ajaxmessage.innerHTML="<FONT COLOR='#6600CC'>该用户名可以使用</FONT>";
- }
- else {
- ajaxmessage.innerHTML="<FONT COLOR='#FF0000'>该用户名已经被使用,或者包含非法字符</FONT>";
- }
- }
- }
- </script>
- <form name="AJAXform" action="Test.asp?Action=Reg" method="post" autocomplete="off">
- 用户名: <input type="text" name="username" id="username" onChange="cheakname();" /><span id="ajaxmessage">是否能注册</span><br>
- <INPUT TYPE="submit">
- </form>
- <%
- Case "Reg"
- names=SqlEncode(request.form("username"))
- Set rs = Server.CreateObject ("ADODB.Recordset")
- sql = "Select * from [数据表]"
- rs.Open sql,conn,3,3
- rs.addnew
- rs("字段")=names
- rs.update
- rs.close
- set rs=nothing
- call CloseDatabase
- response.write("OK")
- End Select
- %>