Ø 浏览器可以直接从JavaScript中初始化请求并获取结果。
Ø 本质上是添加了额外的用于发送和接收XML代码功能的普通HTTP请求。
Ø 像一个 ServletRequest
Ø XMLHttpRequest对象的属性
属性名称
|
描述
|
onreadystatechange
|
指定当readyState属性改变时的事件处理句柄,只写 。
|
readyState
|
返回当前请求的状态,只读。
|
responseBody
|
将回应信息正文以unsigned byte数组形式返回,只读。
|
responseStream
|
以Ado Stream对象的形式返回响应信息,只读 。
|
responseText
|
将响应信息作为字符串返回,只读 。
|
responseXML
|
将响应信息格式化为Xml Document对象并返回,只读 。
|
status
|
返回当前请求的http状态码,只读 。
|
statusText
|
返回当前请求的响应行状态,只读 。
|
Ø XMLHttpRequest对象的方法
方法名称
|
描述
|
abort
|
取消当前请求
|
getAllResponseHeaders
|
获取响应的所有http头
|
getResponseHeader
|
从响应信息中获取指定的http头
|
open
|
创建一个新的http请求,并指定此请求的方法、URL以及验证信息(用户名/密码) //常用
|
send
|
发送请求到http服务器并接收回应 //常用
|
setRequestHeader
|
单独指定请求的某个http头
|
XMLHttpRequest对象的readyState属性
Ø ReadyState属性
属性名称
|
描述
|
0 (未初始化)
|
对象已建立,但是尚未初始化(尚未调用open方法)
|
1 (初始化)
|
对象已建立,尚未调用send方法
|
2 (发送数据)
|
send方法已调用,但是当前的状态及http头未知
|
3 (数据传送中)
|
已接收部分数据,因为响应及http头不全,这时通过responseBody和responseText获取部分数据会出现错误
|
4 (完成)
|
数据接收完毕,此时可以通过通过responseBody和responseText获取完整的回应数据
|
XMLHttpRequest对象的onreadystatechange事件
Ø 每个状态改变时都会触发这个事件处理器,通常会调用一个JavaScript 函数。
Ø 语法
onreadystatechang 指定当readyState属性改变时的事件处理句柄,只写
xmlHttpObj.onreadystatechange=callback;
function callback (){
if(xmlHttpObj.readyState==4){
if(xmlHttpObj.stateus==200){
alert(xmlHttpObj.responseText);
}else{
alert("加载失败!"n原因:"+xmlHttpObj.stateText);
}
}
}
|
XMLHttpRequest对象的responseText属性
Ø 服务器的响应,表示为一个串。
Ø 客户端接收到的HTTP响应的文本内容。
Ø 当readyState值为0、1或2时,responseText包含一个空字符串。
Ø 当readyState值为3(正在接收)时,响应中包含客户端还未完成的响应信息。
Ø 当readyState为4(已加载)时,该responseText包含完整的响应信息。
XMLHttpRequest对象的responseXML属性
Ø 服务器的响应,表示为XML。
Ø 用于当接收到完整的HTTP响应时(readyState为4)描述XML响应。
Ø Content-Type头部指定MIME(媒体)类型为text/xml,application/xml或以+xml结尾。
Ø 如果Content-Type头部并不包含这些媒体类型之一,那么responseXML的值为null。
Ø 无论何时,只要readyState值不为4,那么该responseXML的值也为null。
Ø responseXML可以返回一个文档树(DOM),可以使用document.getElementsByTagName,document.getElementsByTagNameNS,document.getElementById等对其操作。
XMLHttpRequest对象的status属性
Ø 长整形标准http状态码。
Ø 仅当readyState值为3(正在接收中)或4(已加载)时,这个status属性才可用。
Ø 当readyState的值小于3时试图存取status的值将引发一个异常。
Ø 状态码如下定义:
值
|
描述
|
100
|
Continue
|
101
|
Switching protocols
|
200
|
OK
|
201
|
Created
|
202
|
Accepted
|
203
|
Non-Authoritative Information
|
204
|
No Content
|
205
|
Reset Content
|
206
|
Partial Content
|
300
|
Multiple Choices
|
301
|
Moved Permanently
|
302
|
Found
|
303
|
See Other
|
304
|
Not Modified
|
305
|
Use Proxy
|
307
|
Temporary Redirect
|
400
|
Bad Request
|
401
|
Unauthorized
|
402
|
Payment Required
|
403
|
Forbidden
|
404
|
Not Found
|
405
|
Method Not Allowed
|
406
|
Not Acceptable
|
407
|
Proxy Authentication Required
|
408
|
Request Timeout
|
409
|
Conflict
|
410
|
Gone
|
411
|
Length Required
|
412
|
Precondition Failed
|
413
|
Request Entity Too Large
|
414
|
Request-URI Too Long
|
415
|
Unsupported Media Type
|
416
|
Requested Range Not Suitable
|
417
|
Expectation Failed
|
500
|
Internal Server Error
|
501
|
Not Implemented
|
502
|
Bad Gateway
|
503
|
Service Unavailable
|
504
|
Gateway Timeout
|
505
|
HTTP Version Not Supported
|
XMLHttpRequest对象的statusText属性
Ø 描述了HTTP状态代码文本。
Ø 仅当readyState值为3或4才可用。
Ø 当readyState为其它值时试图存取statusText属性将引发一个异常。
Ø 返回当前请求的响应行状态
XMLHttpRequest对象的abort()方法
Ø 暂停与一个XMLHttpRequest对象相联系的HTTP请求。
Ø 从而把该对象复位到未初始化状态。
Ø 用来中断请求,取消当前请求。
XMLHttpRequest对象的open()方法
Ø void open(string method, string url, boolean asynch, string username, string password) 建立对服务器的连接,初始化一个XHR对象的纯脚本方法。
1. ethod参数: 是必须提供的-指定发送请求的HTTP方法(GET,POST,PUT,DELETE或HEAD)。
2. uri参数: 用于指定请求发送到的服务器相应的URI。
3. async参数: 指定请求是否是异步的,预设是true,表示使用非同步方式。为了发送一个同步请求,需要把这个参数设置为false。
Ø 对于要求认证的服务器,提供可选的用户名和口令参数。
Ø 在调用open()方法后,XMLHttpRequest对象把readyState属性设置为1(打开)。
Ø 并且把responseText、responseXML、status和statusText属性复位到它们的初始值。
XMLHttpRequest对象的send()方法
Ø 向服务器发送请求。
Ø 仅当readyState值为1时,才可以调用send()方法;否则的话,XHR对象将引发一个异常。
Ø 当async参数为true时,send()方法立即返回,从而允许其它客户端脚本继续处理。
Ø 在调用send()方法后,XHR对象把readyState的值设置为2(发送)。
Ø 当服务器响应时,在接收消息体之前,如果存在任何消息体的话,XHR对象将把readyState设置为3(正在接收中)。
Ø 当请求完成加载时,它把readyState设置为4(已加载)。
Ø 对于一个HEAD类型的请求,它将在把readyState值设置为3后再立即把它设置为4。
Ø send()方法使用一个可选的参数-该参数可以包含可变类型的数据。
Ø 通过POST方法把数据发送到服务器。
Ø 可以显式地使用null参数调用send()方法,这与不用参数调用它一样。
Ø 对于大多数其它的数据类型,在调用send()方法之前,应该使用setRequestHeader()方法先设置Content-Type头部。
Ø 可选参数可以是DOM 对象的实例、输入流,或者串。
Ø 传入这个方法的内容会作为请求体的一部分发送。
XMLHttpRequest对象的setRequestHeader()方法
Ø setRequestHeader(DOMString header,DOMString value)方法用来设置请求的头部信息。
Ø 当readyState值为1时,你可以在调用open()方法后调用这个方法。否则,你将得到一个异常。
Ø getResponseHeader(DOMString header,value)方法用于检索响应的头部值。
Ø 仅当readyState值是3或4(换句话说,在响应头部可用以后)时,才可以调用这个方法。否则,该方法返回一个空字符串。
XMLHttpRequest对象的getAllResponseHeaders()方法
Ø 该getAllResponseHeaders()方法以一个字符串形式返回所有的响应头部(每一个头部占单独的一行)。
Ø 如果readyState的值不是3或4,则该方法返回null。
作者:周大庆(zhoudaqing)
网址:http://www.blogjava.net/yifeng
>>>转载请注明出处!<<<
posted on 2008-08-26 02:31
忆风 阅读(284)
评论(0) 编辑 收藏 所属分类:
Ajax