`
kang
  • 浏览: 474483 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

全面剖析XMLHttpRequest对象(2)

阅读更多

<!---->

三、 XMLHttpRequest 象的方法

   XMLHttpRequest 象提供了各 方法用于初始化和 HTTP 求,下列将逐个展 开详细讨论

   abort()方法

  你可以使用 abort()方法来 停与一个 XMLHttpRequest 象相 系的 HTTP 求,从而把 该对 位到未初始化状

   open()方法

   你需要 open(DOMString method DOMString uri boolean async DOMString username DOMString password)方法初始化一个 XMLHttpRequest 象。 其中, method 参数是必 提供的 - 用于指定你想用来 求的 HTTP 方法 (GET POST PUT DELETE HEAD) 了把数据 送到服 器, 应该 使用 POST 方法; 了从服 器端 索数据, 应该 使用 GET 方法。 另外, uri 参数用于指定 XMLHttpRequest 象把 送到的服 器相 URI 。借助于 window.document.baseURI 性, uri 被解析 一个 绝对 URI- 话说 ,你可以使用相 URI- 它将使用与 浏览 器解析相 URI 的方式被解析。 async 参数指定是否 求是异 - 缺省 值为 true 送一个同 步请 求,需要把 个参数 false 于要求 认证 的服 器, 你可以提供可 的用 名和口令参数。在 open() 方法后, XMLHttpRequest 象把它的 readyState 属性 1( ) 并且把 responseText responseXML status statusText 属性 位到它 的初始 。另外,它 还复 部。注意,如果你 open() 方法并且此 readyState 4 XMLHttpRequest 象将

   send() 方法

  在通 过调 open() 方法准 好一个 求之后,你需要把 该请 送到服 器。 readyState 值为 1 ,你才可以 send() 方法;否 XMLHttpRequest 象将引 一个异常。 该请 求被使用提供 open() 方法的参数 送到服 器。当 async 参数 true send() 方法立即返回,从而允 其它客 端脚本 继续 。在 send() 方法后, XMLHttpRequest 象把 readyState 值设 2( ) 。当服 器响 应时 ,在接收消息体之前,如果存在任何消息体的 XMLHttpRequest 象将把 readyState 3( 正在接收中 ) 。当 求完 成加 载时 ,它把 readyState 4( 已加 ) 于一个 HEAD 型的 求,它将在把 readyState 值设 3 后再立即把它 4

   send() 方法使用一个可 的参数 - 参数可以包含可 变类 型的数据。典型地,你使用它并通 POST 方法 把数据 送到服 器。另外,你可以 式地使用 null 参数 send() 方法, 与不用参数 用它一 于大多数其它的数据 型,在 send() 方法之前, 应该 使用 setRequestHeader() 方法 ( 后面的解 ) Content-Type 部。如 果在 send(data) 方法中的 data 参数的 DOMString ,那 ,数据将被 编码为 UTF-8 。如果数据是 Document 型,那 将使用由 data.xmlEncoding 指定的 编码 串行化 数据。

   setRequestHeader() 方法

   setRequestHeader(DOMString header DOMString value) 方法用来 求的 部信息。当 readyState 值为 1 ,你可以在 open() 方法后 个方法;否 ,你将得到一个异常。

   getResponseHeader() 方法

   getResponseHeader(DOMString header value) 方法用于 索响 readyState 3 4( 话说 ,在响 应头 部可用以后 ) ,才可以 个方法;否 方法返回一个空字符串。

   getAllResponseHeaders()方法

   getAllResponseHeaders()方法以一个字符串形式返回所有的响 应头 部( 一个 部占 独的一行)。如果 readyState 不是 3 4 则该 方法返回 null

 

 

四、

  在 AJAX中, 多使用 XMLHttpRequest 求都是从一个 HTML事件(例如一个 JavaScript函数的按 (onclick)或一个按 (onkeypress))中被初始化的。 AJAX 支持包括表 在内的各 种应 用程 序。有 ,在填充表 的其它内容之前要求校 一个唯一的表 域。例如要求使用一个唯一的 UserID 来注册表 。如果不是使用 AJAX 来校 验这 UserID 域,那 整个表 都必 被填充和提交。如果 UserID 不是有效的, 个表 被重新提交。例如,一个相 于一个要求必 在服 器端 Catalog ID 的表 域可能按下列形式指定:

form name="validationForm" action="validateForm" method="post"
table
 < tr>< td Catalog Id: /td
  < td
   < input type="text" size="20" id="catalogId" name="catalogId" autocomplete="off" onkeyup="sendRequest()"
  < /td
  < td>< div id="validationMessage">< /div>< /td
 < /tr
/table>< /form


   前面的 HTML使用 validationMessage div 示相 入域 Catalog Id的一个校 消息。 onkeyup事件 用一个 JavaScript sendRequest()函数。 sendRequest()函数 建一个 XMLHttpRequest 象。 建一个 XMLHttpRequest 象的 程因 浏览 实现 的不同而有所区 。如果 浏览 器支持 XMLHttpRequest 象作 一个窗口属性 ( 所有普通的 浏览 都是 这样 的,除了 IE 5 IE 6 之外 ) ,那 ,代 可以 XMLHttpRequest 的构造器。如果 浏览 器把 XMLHttpRequest 实现为 一个 ActiveXObject ( 就象在 IE 5 IE 6 中一 ) ,那 ,代 可以使用 ActiveXObject 的构造器。下面的函数将 用一个 init() 函数,它 负责检查 并决定要使用的适当的 建方法 - 建和返回 象之前。

script type="text/javascript"
function sendRequest(){
  var xmlHttpReq=init();
  function init(){
   if (window.XMLHttpRequest) {
    return new XMLHttpRequest();
   }
  else if (window.ActiveXObject) {
   return new ActiveXObject("Microsoft.XMLHTTP");
  }
}
/script


  接下来,你需要使用 Open()方法初始化 XMLHttpRequest -指定 HTTP方法和要使用的服 URL

var catalogId=encodeURIComponent(document.getElementById("catalogId").value);
xmlHttpReq.open("GET" "validateForm?catalogId=" + catalogId true);


  默 情况下,使用 XMLHttpRequest 送的 HTTP 求是异 步进 行的,但是你可以 式地把 async 参数 true ,如上面所展示的。
这种 情况下, URL validateForm 用将激活服 器端的一个 servlet ,但是你 应该 注意到服 器端技 不是根本性的; 实际 上, URL 可能是一个 ASP ASP.NET PHP 面或一个 Web - 关紧 要,只要 该页 面能 返回一个响 - 指示 CatalogID 是否是有效的 - 即可。因 你在 作一个异 步调 用,所以你需要注册一个 XMLHttpRequest 象将 用的回 事件 理器 - 当它的 readyState 变时调 用。 住, readyState 的改 将会激 一个 readystatechange事件。你可以使用 onreadystatechange属性来注册 事件 理器。

<!---->

xmlHttpReq.onreadystatechange=processRequest;


  然后,我 需要使用 send() 方法 该请 求。因 为这 求使用的是 HTTP GET 方法,所以,你可以在不指定参数或使用 null 参数的情况下 send() 方法。

xmlHttpReq.send(null);

分享到:
评论

相关推荐

    全面剖析XMLHttpRequest对象.doc

    ### 全面剖析XMLHttpRequest对象 #### 引言:AJAX与XMLHttpRequest的革命 XMLHttpRequest对象是现代网络开发中不可或缺的一部分,它是AJAX(Asynchronous JavaScript and XML)技术的核心,使得网页能够在不重新...

    全面剖析XMLHttpRequest对象

    ### 全面剖析XMLHttpRequest对象 #### 引言 随着互联网技术的发展,用户对Web应用的需求日益增长。其中,异步JavaScript与XML(AJAX)技术作为一种新兴的技术手段,在实现客户端脚本与服务器之间高效、无缝的数据...

    全面剖析XMLHttpRequest对象.txt

    ### 全面剖析XMLHttpRequest对象 #### 一、XMLHttpRequest对象简介 XMLHttpRequest是一个非常重要的JavaScript对象,它允许网页向服务器发起异步请求并处理响应数据。这种技术是实现Ajax(Asynchronous JavaScript...

    全面剖析 Ajax XMLHttpRequest对象

    XMLHttpRequest对象是Ajax技术的核心,它是现代Web应用中用于实现客户端与服务器间异步数据交换的关键组件。在不刷新整个页面的情况下,XMLHttpRequest允许开发者通过JavaScript动态更新网页内容,极大地提升了用户...

    全面剖析Ajax的XMLHttpRequest对象.doc

    Ajax 中的 XMLHttpRequest 对象 Ajax 是一种异步的 JavaScript 与 XML 技术,用于在客户端脚本与服务器之间实现数据交互过程。XMLHttpRequest 对象是 Ajax 的技术基础,尽管现在提供了各种 Ajax 框架,但是理解这个...

    全面剖析xmlhttprequest

    ### 全面剖析XMLHttpRequest XMLHttpRequest是一种在浏览器端实现异步数据请求的关键技术,它为Web应用提供了更丰富的交互体验。本文将深入探讨XMLHttpRequest的相关知识点,包括其工作原理、状态管理以及如何通过...

    javascript XMLHttpRequest对象全面剖析

    AJAX最大的特点就是其"异步"性,这意味着当XMLHttpRequest对象的send()方法被调用时,它会立即返回,允许浏览器继续执行其他操作,比如处理用户输入或更新页面的显示,而不会被阻塞等待服务器的响应。这样一来,页面...

    JS XMLHttpRequest原理与使用方法深入详解

    接下来,文章通过结合实例的形式,深入剖析了XMLHttpRequest对象的工作原理以及如何在实际开发中有效地使用它。 首先,文章对Ajax和XMLHttpRequest这两个概念进行了区分。Ajax并不是一种新技术,而是依赖于已有的...

    ajax超详细资料,包你学会

    2. **XMLHttpRequest对象**:Ajax的基础是XMLHttpRequest对象,它提供了一个在后台与服务器交换数据的方法,使得网页可以在不重新加载的情况下更新内容。 3. **创建XMLHttpRequest对象**:所有现代浏览器都内置了...

    掌握AJAX 真正详解

    值得注意的是,正是通过XMLHttpRequest对象,JavaScript得以与服务器进行异步通信,这也是AJAX技术之所以强大的关键所在。 #### 五、AJAX的优势 1. **提升用户体验**:通过局部更新页面内容,减少了页面加载时间,...

    [js]轻便的XMLHttpRequest应用函数:downloadUrl()

    这个函数利用了浏览器内置的 `XMLHttpRequest` 对象或在旧版本的 Internet Explorer 中使用的 ActiveXObject 来实现异步通信。以下是关于 `downloadUrl()` 函数的详细解释: 1. **参数说明**: - `url`:必填参数...

    javaweb资料(非常全面)

    Ajax技术部分,详细剖析了XMLHttpRequest对象,以及如何使用POST和GET方法提交Ajax请求。Ajax技术是实现Web页面异步交互的关键。 jQuery部分,介绍了jQuery的入门使用,包括jQuery的选择器、对象转换以及事件处理。...

Global site tag (gtag.js) - Google Analytics