`

从Hello World开始深入Ajax

    博客分类:
  • J2EE
阅读更多

1.       初始化XMLHttpRequest对象

  1. var xmlHttp;   
  2. function createXMLHttpRequest(){   
  3. document.getElementById("myid_02").width=100;   
  4. if(window.ActiveXObject){   
  5.         xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");   
  6.         alert("Microsoft.XMLHTTP");   
  7. }else if(window.XMLHttpRequest){   
  8.         xmlHttp=new XMLHttpRequest();   
  9.         alert("Http Request");   
  10. }   
  11. }  

通过这一步,我们可以得到浏览器的支持方式,这里我的浏览器是Microsoft.XMLHTTP方式(IE6),事实上在IE7之前的版本中,浏览器都是采用"Microsoft.XMLHTTP方式,只有在IE7中,才会使用Http Request方式。因此在以下的说明中,我都将以我的浏览器版本为依据进行阐述。
2.        向服务器端发出请求

js 代码
  1. function startRequest(){   
  2.     createXMLHttpRequest();   
  3.    xmlHttp.onreadystatechange=handleStateChange;   
  4.    xmlHttp.open("GET","calculator.jsp",true);   
  5.    xmlHttp.send(null);   


         在AJAX中,许多使用XMLHttpRequest的请求都是从一个HTML事件(例如一个调用JavaScript函数的按钮点击(onclick)或一个按键(onkeypress))中被初始化的。AJAX支持包括表单校验在内的各种应用程序。有时,在填充表单的其它内容之前要求校验一个唯一的表单域。但是目前我们最好还是简单一点的好^^。首先说明一下XMLHttpRequest对象的属性onreadystatechange。这个属性能辨识readyState 属性的改变,无论readyState值何时发生改变,XMLHttpRequest对象都会激发一个readystatechange事件。其中,onreadystatechange属性接收一个EventListener值,该值向该方法指示无论readyState值何时发生改变,该对象都将激活。
 
 表格1.XMLHttpRequest对象的ReadyState属性值列表。
取值 描述
0  描述一种"未初始化"状态;此时,已经创建一个XMLHttpRequest对象,但是还没有初始化。
1  描述一种"发送"状态;此时,代码已经调用了XMLHttpRequest open()方法并且XMLHttpRequest已经准备好把一个请求发送到服务器。
2  描述一种"发送"状态;此时,已经通过send()方法把一个请求发送到服务器端,但是还没有收到一个响应。
3  描述一种"正在接收"状态;此时,已经接收到HTTP响应头部信息,但是消息体部分还没有完全接收结束。
4  描述一种"已加载"状态;此时,响应已经被完全接收。

 
 
如果你是一个细心的读者你就会发现这里似乎还要在增加一个JSP页面来处理我们发出的请求信息。为此,我们在这里我们对calculator.jsp进行定义,页面全部内容如下:

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

Hello World

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

是不是相当简单!
 
3.       接收请求信息
       在startRequest函数中,我们声明了要使用handleStateChange对象来标识readyState。通过令xmlHttp.onreadystatechange=handleStateChange,我们就成功注册了一个事件处理器。下面就需要对handleStateChange进行具体的是实现,代码如下:

  1. function handleStateChange(){   
  2.   if(xmlHttp.readyState==4){   
  3.          if(xmlHttp.status==200){   
  4.                         document.forms[0].val.value=xmlHttp.responseText;   
  5.          }   
  6.   }   
  7. }  

当readyState值为0、1或2时,responseText包含一个空字符串。当readyState值为3(正在接收)时,响应中包含客户端还未完成的响应信息。当readyState为4(已加载)时,该responseText包含完整的响应信息。因此,我们一直等到readyState为4才开始将结果返回。
 
4.       第一个Ajax页面全貌(赶紧执行一把吧)
事实上,一个完整的打开服务器链接的通讯方法的定义约定格式如下:
xmlHttp.open(bstrMethod, bstrUrl, varAsync, bstrUser, bstrPassword)
其中:
    bstrMethod: 连接方式,可用的有GET, POST, PUT, or PROPFIND
    bstrUrl: 服务器的url
    varAsync(可选): 调用是否异步,默认为true(调用立即返回)
    bstrUser(可选):用户名,如果url需要验证时附上
    bstrPassword(可选):密码,如果url需要验证时附上
但是通常情况下我们只需要提供前3个参数就足够了。
 
修改handleStateChange方法,修改后的结果如下:

xml 代码
  1. <%@ page contentType="text/html; charset=GBK" %>  
  2. <html>  
  3. <head>  
  4. <title>test</title>  
  5. <script language="javascript">  
  6.     var xmlHttp;   
  7.     function createXMLHttpRequest(){   
  8.         if(window.ActiveXObject){   
  9.             xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");   
  10.             //alert("Microsoft.XMLHTTP");   
  11.             str=document.getElementById("mydiv_01").innerText;   
  12.             document.getElementById("mydiv_01").innerText="【运算结束】";   
  13.         }else if(window.XMLHttpRequest){   
  14.             xmlHttp=new XMLHttpRequest();   
  15.             //alert("Http Request");   
  16.         }   
  17.     }   
  18.     function startRequest(){   
  19.         createXMLHttpRequest();   
  20.         xmlHttp.onreadystatechange=handleStateChange;   
  21.         xmlHttp.open("GET","calculator.jsp",true);   
  22.         xmlHttp.send(null);   
  23.     }   
  24.     function handleStateChange(){   
  25.         if(xmlHttp.readyState==4){   
  26.             if(xmlHttp.status==200){   
  27.                 document.getElementById("mydiv_01").innerText=xmlHttp.responseText;   
  28.             }   
  29.         }   
  30.     }   
  31. </script>  
  32. </head>  
  33. <BODY>  
  34. <font size="+6">First Samples for Ajax</font><br>  
  35. <input type="button" name="subButton" value="获取数据" onclick="startRequest();">  
  36. <center><div id="mydiv_01">【等待触发】</div></center>  
  37. </BODY>  

 
5.       用Ajax实现与服务器的交互
修改index页面,在其中增加以下HTML代码:

xml 代码

 

  1. <center>  
  2.     <form>  
  3.         <input type="text" name="val_01" size="10" value="5">*   
  4.         <input type="text" name="val_02" size="10" value="8">=   
  5.         <input type="text" name="val_03" size="10" value="0">  
  6.     </form>  
  7. </center>  

 
修改startRequest方法,修改后结果如下:

js 代码
  1. function startRequest(){   
  2.     createXMLHttpRequest();   
  3.     xmlHttp.onreadystatechange=handleStateChange;   
  4.     var val_01=document.forms[0].val_01.value;   
  5.     var val_02=document.forms[0].val_02.value;   
  6.     xmlHttp.open("GET","calculator.jsp?val_01="+val_01+"&val_02="+val_02,true);   
  7.     xmlHttp.send(null);   
  8. }  


js 代码
  1. function handleStateChange(){   
  2.     if(xmlHttp.readyState==4){   
  3.         if(xmlHttp.status==200){   
  4.             document.getElementById("mydiv_01").innerText=xmlHttp.responseText;   
  5.             document.forms[0].val_03.value=xmlHttp.responseText;   
  6.         }   
  7.     }   
  8. }  

 
最后,运行查看结果。

js 代码

js 代码
分享到:
评论

相关推荐

    ajax第一个helloworld

    【标题】"Ajax 第一个 HelloWorld" 是初学者进入异步JavaScript和XML(Asynchronous JavaScript and XML)技术领域的起点。Ajax是一种在无需刷新整个网页的情况下,能够更新部分网页的技术,极大地提升了用户体验。...

    jsf 入门 helloWorld

    **JSF(JavaServer Faces)入门 HelloWorld 指南** JavaServer Faces (JSF) 是一个用于构建用户界面的 JavaEE 核心技术,它提供了一种声明式的方式来创建 Web 应用程序的用户界面。JSF 提供了一个组件模型,使得...

    .Net 中使用WebService HelloWorld

    本教程将详细讲解如何在Visual Studio 2010(VS2010)中创建一个简单的“HelloWorld”WebService。这个过程是开发者入门.NET WebService开发的基本步骤。 首先,启动Visual Studio 2010并创建一个新的项目。选择...

    ajax例子----Hello world

    下面我们将深入探讨Ajax的核心概念、工作原理以及如何创建一个“Hello, World”级别的Ajax应用。 Ajax的核心概念主要围绕以下几个方面: 1. **异步通信**:Ajax的核心特性是其异步性,这意味着它可以在不阻塞用户...

    Ajax的HelloWorld1

    在这个"HelloWorld1"的例子中,我们将深入理解Ajax的基本工作流程以及涉及到的关键概念。 首先,我们需要监听窗口的`load`事件,当页面加载完成后,执行指定的函数。在这个函数中,我们获取页面上的第一个`&lt;a&gt;`标签...

    HelloWorld.rar

    在"HelloWorld.rar"这个压缩包中,我们很显然会找到一个基础的ExtJS项目,用于初学者学习和理解如何在实践中应用和导入ExtJS组件库。 在深入探讨之前,先来了解一下ExtJS的核心特性。ExtJS 提供了一个丰富的组件...

    dwr.jar编写helloworld

    &lt;create class="com.example.HelloWorld" javascript="HelloWorld"&gt; ``` 这段配置表示允许JavaScript创建一个名为`HelloWorld`的对象,并可以调用其中的`getName`方法。 3. **创建Java类**:创建一个名...

    Hello World

    - 创建一个HTML文件,例如`HTML_AJAX-HelloWorld.html`: ```html function sayHello() { var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function() { if (xhr.readyState === 4 && xhr....

    Ajax实现helloworld!实例,eclipse+struts+Ajax初学者必看

    这个“Ajax实现helloworld!实例”是针对初学者的一个项目,旨在帮助他们理解并掌握如何在Eclipse开发环境中,结合Struts框架来运用Ajax技术。下面我们将详细探讨这一主题。 首先,我们需要了解Ajax的基本概念。Ajax...

    helloworld框架.rar

    《HelloWorld框架详解——构建前后台交互的基础》 在编程世界中,“Hello, World!”是初学者接触的第一个程序,它标志着编程旅程的开始。而“HelloWorld框架”则是一个简化版的、专用于演示和教学的框架,它帮助...

    HTML_AJAX-HelloWorld.tar

    在本实例中,我们关注的是一个名为"HTML_AJAX-HelloWorld"的压缩包,它包含了使用PEAR(PHP扩展和应用库)中的html_ajax组件实现的一个基本AJAX(异步JavaScript和XML)示例。 首先,让我们理解HTML(超文本标记...

    JSF2.0实战 - 1-3、Hello World,AJAX体验,onPageLoad

    例如,`HelloWorld.xhtml`,并在其中编写如下代码: ```html &lt;!DOCTYPE html&gt; xmlns:h="http://xmlns.jcp.org/jsf/html"&gt; &lt;title&gt;Hello World &lt;h1&gt;#{helloBean.message} ``` 这里,`#{helloBean....

    JSF helloworld

    这个“JSF HelloWorld”示例将帮助我们了解JSF的基础工作原理以及如何开始使用它。我们将探讨以下几个关键知识点: 1. **JSF 概述** JSF 是一种组件驱动的MVC(Model-View-Controller)框架,它简化了创建和维护...

    RAP Helloworld

    "RAP Helloworld" 是一个初学者入门级别的程序,它标志着你在探索 Rich Ajax Platform(简称 RAP)的旅程已经开始。RAP 是一个强大的、基于 Java 的 Web 应用程序框架,专门设计用于构建富客户端应用程序,其核心是...

    jsf2.0版本helloworld

    虽然在描述中未提及,但在实际开发中,你可以通过集成PrimeFaces来增强"HelloWorld"应用的用户体验,例如使用`&lt;p:commandButton&gt;`实现AJAX操作,或使用`&lt;p:dialog&gt;`显示对话框。 **学习资源** 为了深入学习JSF 2.0...

    AngularJS 之Hello World篇

    接下来,我们来看看`helloworld.js`文件,它包含了AngularJS应用的逻辑部分: ```javascript var app = angular.module('myApp', []); app.controller('HelloCtrl', function($scope) { $scope.greeting = '你好,...

    Dwr helloworld小例子

    在“Dwr helloworld小例子”中,我们可以通过一个简单的项目来学习DWR的基本用法。MyEclipse是一款强大的集成开发环境,特别适合于Java和Web应用的开发,它内置了对DWR的支持。 首先,我们需要在MyEclipse中创建一...

    第一个DWR HelloWorld例子(附:详细说明)

    在开始DWR HelloWorld例子之前,我们需要在项目中引入DWR相关的jar文件,并在web.xml中配置DWR的Servlet。这通常包括设置DWR Context Path、允许访问的类等参数。 3. **创建HelloWorld Java类** 首先,我们需要在...

    dwr+demo+helloworld

    在这个"Dwr+Demo+helloworld"示例中,我们将探讨如何利用DWR轻松实现JavaScript与Java之间的交互,创建一个简单的"Hello, World!"应用程序。 首先,我们需要了解DWR的基本概念。DWR的核心功能是提供一个代理层,...

    hello_helloworld_htmljavascript_javascript_

    标题中的"hello_helloworld_htmljavascript_javascript_"似乎是一种组合关键词的方式,它可能代表着一个初学者入门编程时常常遇到的“Hello, World!”程序,这里特别提到了HTML、JavaScript和CSS这三个关键技术。...

Global site tag (gtag.js) - Google Analytics