找回密码
 入学

QQ登录

只需一步,快速开始

查看: 2463|回复: 13

AJAX 实例

[复制链接]
1#
发表于 2009-10-13 15:08:08 | 只看该作者 |倒序浏览 |阅读模式
您的第一个 AJAX 应用程序为了让您理解 AJAX 的工作原理,我们将创建一个小型的 AJAX 应用程序。
首先,我们需要一个带有两个文本框的 HTML 表单:用户名和时间。用户名文本框由用户填写,而时间文本框使用 AJAX 进行填写。
此 HTML 文件名为 "testAjax.htm"(请注意这个 HTML 表单没有提交按钮!):
  1. <html>
  2. <body>
  3. <form name="myForm">
  4. 用户: <input type="text" name="username" />
  5. 时间: <input type="text" name="time" />
  6. </form>
  7. </body>
  8. </html>
复制代码
AJAX - 浏览器支持AJAX 的要点是 XMLHttpRequest 对象。
不同的浏览器创建 XMLHttpRequest 对象的方法是有差异的。
IE 浏览器使用 ActiveXObject,而其他的浏览器使用名为 XMLHttpRequest 的 JavaScript 内建对象。
如需针对不同的浏览器来创建此对象,我们要使用一条 "try and catch" 语句。您可以在我们的 JavaScript 教程中阅读更多有关 try 和 catch 语句的内容。
让我们用这段创建 XMLHttpRequest 对象的 JavaScript 来更新一下我们的 "testAjax.htm" 文件:
  1. <html>
  2. <body>
  3. <script type="text/javascript">
  4. function ajaxFunction()
  5. {
  6. var xmlHttp;
  7. try
  8.     {
  9.    // Firefox, Opera 8.0+, Safari
  10.     xmlHttp=new XMLHttpRequest();
  11.     }
  12. catch (e)
  13.     {
  14.   // Internet Explorer
  15.    try
  16.       {
  17.       xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  18.       }
  19.    catch (e)
  20.       {
  21.       try
  22.          {
  23.          xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  24.          }
  25.       catch (e)
  26.          {
  27.          alert("您的浏览器不支持AJAX!");
  28.          return false;
  29.          }
  30.       }
  31.     }
  32. }
  33. </script>

  34. <form name="myForm">
  35. 用户: <input type="text" name="username" />
  36. 时间: <input type="text" name="time" />
  37. </form></body>
  38. </html>
复制代码


例子解释:首先声明一个保存 XMLHttpRequest 对象的 xmlHttp 变量。
然后使用 XMLHttp=new XMLHttpRequest() 来创建此对象。这条语句针对 Firefox、Opera 以及 Safari 浏览器。假如失败,则尝试针对 Internet Explorer 6.0+ 的 xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"),假如也不成功,则尝试针对 Internet Explorer 5.5+ 的 xmlHttp=new ActiveXObject("Microsoft.XMLHTTP")。
假如这三种方法都不起作用,那么这个用户所使用的浏览器已经太过时了,他或她会看到一个声明此浏览器不支持 AJAX 的提示。
注释:上面这些浏览器定制的代码很长,也很复杂。不过,每当您希望创建 XMLHttpRequest 对象时,这些代码就能派上用场,因此您可以在任何需要使用的时间拷贝粘贴这些代码。上面这些代码兼容所有的主流浏览器:Internet Explorer、Opera、Firefox 以及 Safari。
2#
 楼主| 发表于 2009-10-13 15:17:11 | 只看该作者
AJAX - 更多有关 XMLHttpRequest 对象的知识在向服务器发送数据之前,我们有必要解释一下 XMLHttpRequest 对象的三个重要的属性。
onreadystatechange 属性onreadystatechange 属性存有处理服务器响应的函数。下面的代码定义一个空的函数,可同时对 onreadystatechange 属性进行设置:
  1. xmlHttp.onreadystatechange=function()
  2.   {
  3.   // 我们需要在这里写一些代码
  4.   }
复制代码
readyState 属性readyState 属性存有服务器响应的状态信息。每当 readyState 改变时,onreadystatechange 函数就会被执行。
这是 readyState 属性可能的值:
状态描述
0请求未初始化(在调用 open() 之前)
1请求已提出(调用 send() 之前)
2请求已发送(这里通常可以从响应得到内容头部)
3请求处理中(响应中通常有部分数据可用,但是服务器还没有完成响应)
4请求已完成(可以访问服务器响应并使用它)
我们要向这个 onreadystatechange 函数添加一条 If 语句,来测试我们的响应是否已完成(意味着可获得数据):
  1. xmlHttp.onreadystatechange=function()
  2.   {
  3.   if(xmlHttp.readyState==4)
  4.     {
  5.     // 从服务器的response获得数据
  6.     }
  7.   }
复制代码
responseText 属性可以通过 responseText 属性来取回由服务器返回的数据。
在我们的代码中,我们将把时间文本框的值设置为等于 responseText:
  1. xmlHttp.onreadystatechange=function()
  2.   {
  3.   if(xmlHttp.readyState==4)
  4.     {
  5.     document.myForm.time.value=xmlHttp.responseText;
  6.     }
  7.   }
复制代码
回复

使用道具 举报

3#
 楼主| 发表于 2009-10-13 15:21:50 | 只看该作者
AJAX - 向服务器发送一个请求要想把请求发送到服务器,我们就需要使用 open() 方法和 send() 方法。
open() 方法需要三个参数。第一个参数定义发送请求所使用的方法(GET 还是 POST)。第二个参数规定服务器端脚本的 URL。第三个参数规定应当对请求进行异步地处理。
send() 方法可将请求送往服务器。如果我们假设 HTML 文件和 ASP 文件位于相同的目录,那么代码是这样的:
  1. xmlHttp.open("GET","time.asp",true);
  2. xmlHttp.send(null);
复制代码

现在,我们必须决定何时执行 AJAX 函数。当用户在用户名文本框中键入某些内容时,我们会令函数“在幕后”执行。
  1. <html>
  2. <body>

  3. <script type="text/javascript">

  4. function ajaxFunction()
  5. {
  6. var xmlHttp;

  7. try
  8.     {
  9.    // Firefox, Opera 8.0+, Safari
  10.     xmlHttp=new XMLHttpRequest();
  11.     }
  12. catch (e)
  13.     {

  14.   // Internet Explorer
  15.    try
  16.       {
  17.       xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  18.       }
  19.    catch (e)
  20.       {

  21.       try
  22.          {
  23.          xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  24.          }
  25.       catch (e)
  26.          {
  27.          alert("您的浏览器不支持AJAX!");
  28.          return false;
  29.          }
  30.       }
  31.     }
  32.        
  33.     xmlHttp.onreadystatechange=function()
  34.       {
  35.       if(xmlHttp.readyState==4)
  36.         {
  37.          document.myForm.time.value=xmlHttp.responseText;
  38.         }
  39.       }
  40.     xmlHttp.open("GET","time.asp",true);
  41.     xmlHttp.send(null);
  42.        
  43. }
  44. </script>

  45. <form name="myForm">
  46. 用户: <input type="text" name="username" onkeyup="ajaxFunction();" />
  47. 时间: <input type="text" name="time" />
  48. </form>

  49. </body>
  50. </html>
复制代码
回复

使用道具 举报

4#
 楼主| 发表于 2009-10-13 15:23:40 | 只看该作者
AJAX - 服务器端的脚本现在,我们要创建可显示当前服务器时间的脚本。
responseText 属性会存储从服务器返回的数据。在这里,我们希望传回当前的时间。这是 "time.asp" 的代码:
  1. <%
  2. response.expires=-1
  3. response.write(time)
  4. %>
复制代码
注释:Expires 属性可设置在页面缓存失效前页面被缓存的时间(分钟)。Response.Expires=-1 指示页面不会被缓存。

修改之后的代码
游客,如果您要查看本帖隐藏内容请回复

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?入学

×
回复

使用道具 举报

5#
发表于 2009-10-15 13:16:03 | 只看该作者
我是啊!我是啊!
回复

使用道具 举报

6#
发表于 2009-11-9 11:53:20 | 只看该作者
啊大大哦 dsvfs
回复

使用道具 举报

7#
发表于 2010-4-9 21:37:49 | 只看该作者
xiaxiakankana
回复

使用道具 举报

8#
发表于 2010-4-12 18:58:46 | 只看该作者
呵呵呵呵哈哈哈哈哈哈哈
回复

使用道具 举报

9#
发表于 2010-4-12 19:09:55 | 只看该作者
gg daggag adsg
回复

使用道具 举报

10#
发表于 2010-4-12 19:17:32 | 只看该作者
顶2222222222222222222222222222222222
回复

使用道具 举报

11#
发表于 2010-4-12 19:18:24 | 只看该作者
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
回复

使用道具 举报

12#
发表于 2010-4-15 21:41:00 | 只看该作者
goodgoodgoodgoodgoodgoodgood
回复

使用道具 举报

13#
发表于 2010-7-15 18:52:53 | 只看该作者
sdfgsdgsdfg
回复

使用道具 举报

14#
发表于 2011-6-1 19:28:18 | 只看该作者
{:soso_e182:}{:soso_e182:}{:soso_e182:}{:soso_e182:}{:soso_e182:}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 入学

本版积分规则

QQ|Archiver|手机版|小黑屋|校园天空成立于2004年2月24日 ( 陕ICP备08000078号-8 )

GMT+8, 2025-6-17 07:03 , Processed in 0.109629 second(s), 18 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表