Ajax的核心就是XMLHttpRequest对象
XMLHttpRequest对象的属性和事件
XMLHttpRequest对象暴露各种属性、方法和事件以便于脚本处理和控制HTTP请求与响应。下面,我们将对此展开详细的讨论。
readyState属性
当XMLHttpRequest对象把一个HTTP请求发送到服务器时将经历若干种状态:一直等待直到请求被处理;然后,它才接收一个响应。这样以来,脚本才正确响应各种状态-XMLHttpRequest对象暴露一个描述对象的当前状态的readyState属性,如表格1所示。
表格1.XMLHttpRequest对象的ReadyState属性值列表。
ReadyState取值 描述
0 描述一种"未初始化"状态;此时,已经创建一个XMLHttpRequest对象,但是还没有初始化。
1 描述一种"发送"状态;此时,代码已经调用了XMLHttpRequest open()方法并且XMLHttpRequest已经准备好把一个请求发送到服务器。
2 描述一种"发送"状态;此时,已经通过send()方法把一个请求发送到服务器端,但是还没有收到一个响应。
3 描述一种"正在接收"状态;此时,已经接收到HTTP响应头部信息,但是消息体部分还没有完全接收结束。
4 描述一种"已加载"状态;此时,响应已经被完全接收。
onreadystatechange事件
无论readyState值何时发生改变,XMLHttpRequest对象都会激发一个readystatechange事件。其中,onreadystatechange属性接收一个EventListener值-向该方法指示无论readyState值何时发生改变,该对象都将激活。
responseText属性
这个responseText属性包含客户端接收到的HTTP响应的文本内容。当readyState值为0、1或2时,responseText包含一个空字符串。当readyState值为3(正在接收)时,响应中包含客户端还未完成的响应信息。当readyState为4(已加载)时,该responseText包含完整的响应信息。
responseXML属性
此responseXML属性用于当接收到完整的HTTP响应时(readyState为4)描述XML响应;此时,Content-Type头部指定MIME(媒体)类型为text/xml,application/xml或以+xml结尾。如果Content-Type头部并不包含这些媒体类型之一,那么responseXML的值为null。无论何时,只要readyState值不为4,那么该responseXML的值也为null。
其实,这个responseXML属性值是一个文档接口类型的对象,用来描述被分析的文档。如果文档不能被分析(例如,如果文档不是良构的或不支持文档相应的字符编码),那么responseXML的值将为null。
status属性
这个status属性描述了HTTP状态代码,而且其类型为short。而且,仅当readyState值为3(正在接收中)或4(已加载)时,这个status属性才可用。当readyState的值小于3时试图存取status的值将引发一个异常。
statusText属性
这个statusText属性描述了HTTP状态代码文本;并且仅当readyState值为3或4才可用。当readyState为其它值时试图存取statusText属性将引发一个异常。
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技术。 一、Ajax基础概念 Ajax的核心在于其异步性,即它能在用户与页面交互时向后台发送请求,而不会阻塞用户界面。JavaScript是实现Ajax的关键,负责构建...
这个系列教程的第九部分,我们聚焦于“Ajax系列教程 9”,它将深入探讨Ajax如何在网页开发中发挥重要作用,特别是在提升用户体验方面。 Ajax的核心原理是利用JavaScript异步地与服务器进行通信,同时通过XML或JSON...
【Ajax系列9:使用Google Ajax Search API】 Ajax(Asynchronous JavaScript and XML)技术允许Web应用程序在无需刷新整个页面的情况下与服务器进行数据交换,提供更流畅的用户体验。在本系列的第9部分,我们将探讨...
**ASP.NET AJAX系列3** ASP.NET AJAX,全称为ASP.NET Asynchronous JavaScript and XML,是微软在ASP.NET框架中提供的一套用于构建富交互式Web应用的技术。这一系列旨在深入探讨如何利用ASP.NET AJAX来提升用户体验...
**Ajax系列教程1** 在Web开发领域,Ajax(异步JavaScript和XML)是一种改变游戏规则的技术,它使得网页能够在不刷新整个页面的情况下与服务器进行数据交互。本教程将引导你深入理解Ajax的基础知识,助你在Web2.0的...
ASP.NET AJAX库是一系列用于构建富交互式Web应用程序的组件和技术。这个库是Microsoft为.NET Framework提供的一部分,它允许开发者在不刷新整个页面的情况下更新页面的特定部分,从而实现更流畅、更快捷的用户体验。...
ASP.NET AJAX是一个完整的开发框架,其服务器端编程模型相对于客户端编程模型较为简单,而且容易与现有的ASP.NET程序相结合,通常实现复杂的功能只需要在页面中拖几个控件,而不必了解深层次的工作原理,除此之外...
**Ajax系列教程 4** 在Web开发中,Ajax(Asynchronous JavaScript and XML)技术是一种用于创建动态、交互性更强的网页应用的关键工具。它允许页面在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页...
**AJAX系列 CHM格式** AJAX(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。它通过在后台与服务器进行少量数据交换,使网页实现异步更新,提升了用户体验。...
ASP.NET AJAX系列是针对微软开发框架中的ASP.NET技术的一个重要扩展,主要目的是为了提供更流畅、更响应式的用户体验。在本系列的第五部分,我们将会深入探讨ASP.NET AJAX中的一个关键组件——UpdateProgress控件。...
1. **轻松掌握Ajax.net系列教程一.doc**:可能涵盖了Ajax基础概念的介绍,包括XMLHttpRequest对象的使用,以及如何在.NET环境下创建第一个Ajax请求。 2. **轻松掌握Ajax.net系列教程三.doc**:可能讲解了如何利用...
2. **JavaScript事件处理**:当请求被发送到服务器后,XMLHttpRequest对象会触发一系列的事件,如onreadystatechange。开发者可以注册这些事件的回调函数,以便在合适的时候执行相应的操作,例如检查readyState和...
javascript是一种在浏览器端执行的脚本语言,Ajax是一种创建交互式网页应用的开发技术 ,它是利用了一系列相关的技术其中就包括javascript。 Javascript是由网景公司开发的一种脚本语言,它和sun公司的java语言是...
本教程“JavaScript-AJAX系列视频教程”旨在深入讲解这两者,帮助学习者掌握JavaScript基础以及如何利用AJAX实现异步交互。 首先,JavaScript作为客户端脚本语言,其基础知识包括变量、数据类型、控制结构(如条件...
在这个"新瓶旧酒ASP.NET AJAX系列文章"的压缩包中,你将找到一系列关于ASP.NET AJAX的详细教程和源码实例,涵盖了从客户端脚本到服务器端控件,再到Web服务的全方位学习资源。 首先,让我们来深入了解一下ASP.NET ...
**Ajax技术详解** Ajax,全称"Asynchronous ...综上所述,Ajax技术在现代Web开发中扮演着重要角色,它极大地优化了用户体验,同时也带来了一系列的开发挑战。深入理解和掌握Ajax,是提升Web应用性能和交互性的关键。
在本课程"ASP.NET AJAX深入浅出系列课程(21):利用Microsoft AJAX Library开发客户端组建(上)"中,我们将探讨如何使用Microsoft AJAX Library来构建动态的、响应式的客户端组件。 首先,我们要理解Microsoft AJAX ...
在ASP.NET AJAX系列教程中,第四部分主要聚焦于如何有效地使用UpdatePanel控件,这是ASP.NET AJAX库中的一个核心组件,它允许开发者实现页面的部分刷新,从而提供更流畅、更接近客户端脚本体验的Web应用程序。这一...
**ASP.NET AJAX系列7:深入理解自定义异常处理** 在ASP.NET AJAX开发中,异常处理是不可或缺的一部分。本文将深入探讨如何在ASP.NET AJAX应用程序中有效地处理自定义异常,以提高应用的稳定性和用户体验。 首先,...
**Ajax系列教程 7:服务器端的AJAX应用(二)** 在Web开发中,Ajax(Asynchronous JavaScript and XML)技术已经成为构建动态、交互性网页的重要工具。它允许页面在不重新加载整个页面的情况下,与服务器交换数据并...