AJAX核心XMLHttpRequest对象

XMLHttpRequest对象
  XMLHttpRequest对象,依靠它从服务器获取所需的信息,与服务器进行异步通信。

(1)XMLHttpRequest对象的创建
function createXmlHttpRequest()
{
    var xmlhttp;
        try{
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); //IE 5.0版本
    }
    catch(e){
        try{
            xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); //IE 5.5版本
        }
        catch(e){
            try{
                xmlhttp = new XMLHttpRequest(); //不支持ActiveX空间的浏览器
            }
            catch(e){}
        }
    }
    return xmlhttp;
}
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对象常用的属性和方法说明
1. open方法
open(method,url,asynchronous[,user][,password]);
open方法参数说明
参数
描述
method请求类型,通常为get或post
url请求的URL地址
asynchronous请求模式,同步(为true,默认)或异步(为false)
user请求的用户名,可省略
password请求的密码,可省略

open方法用于创建请求。URL可以是绝对地址,也可以是相对地址,并可以带有查询字符串。使用post方式,在提交(调用send方法)前应调用setRequestHeader方法设置HTTP头。如果asynchronous为true,即同步模式,该模式下提交请求后一直等待请求完成或超时才执行下一条语句;如果为false,即异步模式,该模式下提交请求后立即执行下一条语句。

2. send方法
send(body);
body参数为向服务器提交的查询字符串,例: var body="user=AjaxUser&id=123";

3. abort方法
例:
//发送请求
xmlhttp.send(null);
//取消上述请求
xmlhttp.abort();


4. onreadystatechange事件
发送请求之后,服务器何时响应请求,响应数据何时接收完毕我们不得而知,因此要使用事件机制捕获请求的状态,onreadystatechange是XMLHttpRequest对象提供的事件。open ,send方法都会触发该事件。
利用onreadystatechange事件处理响应数据是要等数据接收完毕之后,即readyState的值为4时进行,通常处理方法为:
//为XMLHttpRequest对象xmlhttp绑定一上事件处理函数
xmlhttp.onreadystatechange = function(){
//如果readyState为4时说明数据接收完毕
    if(xmlhttp.readyState == 4)
    {
        //请求完毕时的处理代码
    }
}

注意该语句要写在调用send方法之前,以便能处理响应数据
readyState属性值说明
readyState值
描述
0readyState初始值,表示XMLHttpRequest已创建
1open方法已调用
2send方法已调用
3请求发送成功,等待接收数据
4数据接收完毕

5. status属性
服务器响应结果要依靠status属性来判断。
HTTP状态码说明
HTTP状态码
描述
200请求响应成功
202请求被接收,但处理未完成
400错误的请求
404请求资源未找到
500内部服务器错误

//为XMLHttpRequest对象xmlhttp绑定一个事件处理函数
xmlhttp.onreadystatechange = function(){
    //如果readyState为4时说明数据接收完毕
    if(xmlhttp.readyState == 4)
    {
        //如果HTTP状态码为200说明请求成功响应
        if(xmlhttp.status == 200)
        {
            //处理服务器成功响应请求的数据
        }
        else
        {
            //判断HTTP状态码,给出相应错误提示
        }
    }
}


6. responseText属性
服务器成功处理请求并返回之后,利用responseText属性接收返回的数据,通常接收纯文本和HTML文档或片段。

7. responseXML属性
用来接收返回的XML文档数据,使用该属性时,服务器端要生成XML格式的数据,还要把响应的content-type设置为text/html. 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值