Ajax入门-简易教程

AJAX简介:

AJAX 指异步 JavaScript 及 XMLAsynchronous JavaScript And XML)。

JAX 不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的 Web 应用程序的技术。

通过 AJAX,你可以创建更好、更快以及更友好的 WEB 应用程序。

AJAX 基于 JavaScript 和 HTTP 请求(HTTP requests)。

----------------------------------------------------------------------------------------------

AJAX = 异步 JavaScript 及 XMLAsynchronous JavaScript and XML

通过 AJAX,您的 JavaScript 可使用 JavaScript 的 XMLHttpRequest 对象来直接与服务器进行通信。通过这个对象,您的 JavaScript 可在不重载页面的情况与 Web 服务器交换数据。

AJAX 在浏览器与 Web 服务器之间使用异步数据传输(HTTP 请求),这样就可使网页从服务器请求少量的信息,而不是整个页面。

AJAX 可使因特网应用程序更小、更快,更友好。

AJAX 是一种独立于 Web 服务器软件的浏览器技术。

----------------------------------------------------------------------------------------------

AJAX 使用 Http 请求

在传统的 JavaScript 编程中,假如您希望从服务器上的文件或数据库中得到任何的信息,或者向服务器发送信息的话,就必须利用一个 HTML 表单向服务器 GET 或 POST 数据。而用户则需要单击提交按钮来发送/获取信息,等待服务器的响应,然后一张新的页面会加载结果。

由于每当用户提交输入后服务器都会返回一张新的页面,传统的 web 应用程序变得运行缓慢,且越来越不友好。

通过利用 AJAX,您的 JavaScript 会通过 JavaScript 的 XMLHttpRequest 对象,直接与服务器来通信。

通过使用 HTTP 请求,web 页可向服务器进行请求,并得到来自服务器的响应,而不加载页面。用户可以停留在同一个页面,他或她不会注意到脚本在后台请求过页面,或向服务器发送过数据。

----------------------------------------------------------------------------------------------XMLHttpRequest 对象

通过使用 XMLHttpRequest 对象,web 开发者可以做到在页面已加载后从服务器更新页面!

在 2005 年 AJAX 被 Google 推广开来(Google Suggest)。

Google 建议使用 XMLHttpRequest 对象来创建一种动态性极强的 web 界面:当您开始在 Google 的搜索框中输入查询时,JavaScript 会向某个服务器发出这些字词,然后服务器会返回一系列的搜索建议。

----------------------------------------------------------------------------------------------

您的第一个 AJAX 应用程序

AJAX - 浏览器支持

AJAX 的要点是 XMLHttpRequest 对象。

不同的浏览器创建 XMLHttpRequest 对象的方法是有差异的。

IE 浏览器使用 ActiveXObject,而其他的浏览器使用名为 XMLHttpRequest 的 JavaScript 内建对象。


 1 <html>
 2 <body>
 3 
 4 <script type="text/javascript">
 5 
 6 function ajaxFunction()
 7  {
 8  var xmlHttp;
 9  
10  try
11     {
12    // Firefox, Opera 8.0+, Safari
13     xmlHttp=new XMLHttpRequest();
14     }
15  catch (e)
16     {
17 
18   // Internet Explorer
19    try
20       {
21       xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
22       }
23    catch (e)
24       {
25 
26       try
27          {
28          xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
29          }
30       catch (e)
31          {
32          alert("您的浏览器不支持AJAX!");
33          return false;
34          }
35       }
36     }
37  }
38 </script>
39 
40 <form name="myForm">
41     用户: <input type="text" name="username" />
42     时间: <input type="text" name="time" />
43 </form></body>
44 </html>
45 

例子解释:

首先声明一个保存 XMLHttpRequest 对象的 xmlHttp 变量。

然后使用 XMLHttp=new XMLHttpRequest() 来创建此对象。这条语句针对 FirefoxOpera 以及 Safari 浏览器。假如失败,则尝试针对 Internet Explorer 6.0+ 的 xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"),假如也不成功,则尝试针对 Internet Explorer 5.5+ 的 xmlHttp=new ActiveXObject("Microsoft.XMLHTTP")

假如这三种方法都不起作用,那么这个用户所使用的浏览器已经太过时了,他或她会看到一个声明此浏览器不支持 AJAX 的提示。

----------------------------------------------------------------------------------------------

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     if (xmlHttp.readyState == 4){
3         //从服务器的response获得数据
4     }
5 }
6 

responseText 属性

可以通过 responseText 属性来取回由服务器返回的数据。

----------------------------------------------------------------------------------------------

向服务器发送一个请求

要想把请求发送到服务器,我们就需要使用 open() 方法和 send() 方法。

open() 方法需要三个参数。第一个参数定义发送请求所使用的方法(GET 还是 POST)。第二个参数规定服务器端脚本的 URL。第三个方法规定应当对请求进行异步地处理。

send() 方法可将请求送往服务器。如果我们假设 HTML 文件和 ASP 文件位于相同的目录,那么代码是这样的:

xmlHttp.open("GET","time.jsp",true);

xmlHttp.send(null);

 1 <html>
 2 <body>
 3 
 4 <script type="text/javascript">
 5 
 6 function ajaxFunction()
 7  {
 8  var xmlHttp;
 9  
10  try
11     {
12    // Firefox, Opera 8.0+, Safari
13     xmlHttp=new XMLHttpRequest();
14     }
15  catch (e)
16     {
17 
18   // Internet Explorer
19    try
20       {
21       xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
22       }
23    catch (e)
24       {
25 
26       try
27          {
28          xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
29          }
30       catch (e)
31          {
32          alert("您的浏览器不支持AJAX!");
33          return false;
34          }
35       }
36     }
37     
38     xmlHttp.onreadystatechange=function()
39       {
40       if(xmlHttp.readyState==4)
41         {
42          document.myForm.time.value=xmlHttp.responseText;
43         }
44       }
45     xmlHttp.open("GET","time.asp",true);
46     xmlHttp.send(null);
47     
48  }
49 </script>
50 
51 <form name="myForm">
52 用户: <input type="text" name="username" onkeyup="ajaxFunction();" />
53 时间: <input type="text" name="time" />
54 </form>
55 
56 </body>
57 </html>
58 

----------------------------------------------------------------------------------------------

AJAX - 服务器端的脚本

现在,我们要创建可显示当前服务器时间的脚本。

responseText 属性会存储从服务器返回的数据。在这里,我们希望传回当前的时间。这是 "time.asp" 的代码:


1 <%
2     response.expires=-1
3     response.write(time)
4 %>
5 

注释:Expires 属性可设置在页面缓存失效前页面被缓存的时间(分钟)。Response.Expires=-1 指示页面不会被缓存。




posted on 2009-07-28 15:54 彭伟 阅读(194) 评论(0)  编辑  收藏 所属分类: Good_Study


只有注册用户登录后才能发表评论。


网站导航:
 
<2009年7月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

导航

统计

常用链接

留言簿(3)

随笔分类

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜