XMLHttpRequest(XHR)
Ø 浏览器可以直接从JavaScript中初始化请求并获取结果。
Ø 本质上是添加了额外的用于发送和接收XML代码功能的普通HTTP请求。
Ø 像一个 ServletRequest
XMLHttpRequest对象的属性和事件
Ø XMLHttpRequest对象的属性
属性名称 |
描述 |
onreadystatechange |
指定当readyState属性改变时的事件处理句柄,只写 。 |
readyState |
返回当前请求的状态,只读。 |
responseBody |
将回应信息正文以unsigned byte数组形式返回,只读。 |
responseStream |
以Ado Stream对象的形式返回响应信息,只读 。 |
responseText |
将响应信息作为字符串返回,只读 。 |
responseXML |
将响应信息格式化为Xml Document对象并返回,只读 。 |
status |
返回当前请求的http状态码,只读 。 |
statusText |
返回当前请求的响应行状态,只读 。 |
XMLHttpRequest对象的方法
Ø 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