Ajax的核心对象XMLHttpRequest

   XMLHttpRequest是XMLHTTP组件的对象,通过这个对象,Ajax可以像桌面应用程序一样只同服务器进行数据层的信息交换,而不用每次都刷新页面,也不用每次将数据处理的工作都交给服务器来做;这样即减轻了服务器的负担又加快了响应速度、缩短了用户等待的时间。

    XMLHttpRequest是Ajax技术中最重要的一个对象,一个页面在不刷新的情况下可以通过XMLHttpRequest对象发送请求来获取服务器响应。在实际开发中,设计人员可以通过使用该对象在不刷新当前页面的情况下更新局部数据。

    XMLHttpRequest是浏览器已经定义好的对象,它是Ajax技术的核心组成部分,JavaScript通过它和服务器之间进行通信,并借助它来解析从服务器传回来的XML文件。

    需要注意的是,该对象的创建方法与浏览器相关,从IE 5.0浏览器开始,开发人员可以在Web页面内部使用XMLHTTP ActiveX组件扩展自身的功能。Mozilla 1.0浏览器和NetScape 7浏览器则是创建继承XML的代理类XMLHttpRequest。在大多数情况下,XMLHttpRequest对象和XMLHTTP组件都是非常接近的,他们的方法和属性基本类似,只是在部分属性上有所不同。

    在使用XMLHttpRequest对象发送请求和处理响应之前,必须先用JavaScript创建一个XMLHttpRequest对象。由于XMLHttpRequest不是一个W3C标准,所以可以采用多种方法使用JavaScript来创建XMLHttpRequest的实例。Internet Explorer把XMLHttpRequest实现为一个ActiveX对象,其他浏览器(如Firefox、Safari和Opera)把它实现为一个本地JavaScript对象。由于存在这些差别,JavaScript代码中必须包含有关的逻辑,从而使用ActiveX技术或者使用本地JavaScript对象技术来创建XMLHttpRequest的一个实例。

//开始初始化XMLHttpRequest对象
        if(window.XMLHttpRequest) ...{ //Mozilla 浏览器
            http_request = new XMLHttpRequest();
            if (http_request.overrideMimeType) ...{//设置MiME类别
                http_request.overrideMimeType('text/xml');
            }
        }
        else if (window.ActiveXObject) ...{ // IE浏览器
            try ...{
                http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) ...{
                try ...{
                    http_request = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) ...{}
            }
        }

    虽然在不同的浏览器中创建该对象的方法不同,由于JavaScript脚本语言是动态的,解释型的语言,并且XMLHttpRequest对象在不同的浏览器中是兼容的,因此实际编程中开发人员可以采用同样的方式使用该对象的属性和方法。

  XMLHttpRequest对象的相关属性和方法
    XMLHttpRequest的方法:
    abort() 停止当前请求
    getAllResponseHeaders() 把Http请求的所有响应首部作为键/值对返回
    getResponseHeader("header") 返回指定首部的字符串的值
    open(String method,String url,boolean asynchron,String username,String password) 建立对服务器的调用,其中method可以用put,get,post,参数即可以使用绝对地址也可以使用相对地址;url是表示建立的请求将要发送到目的地中进行处理;asynchron表示是否异步。
    该方法中的5个参数,其中前两个是必须的,后三个是可选的,调用该方法将建立Ajax对服务器的调用,即完成请求的初始化的方法。在调用该方法时,需要指定调用的方法包括GET、POST及PUT,还需要提供调用资源的URL,此外,boolead类型的asynchron用于指定在进行调用时是采用同步方式还是异步方式,默认true,即异步方式。如果参数数值为false,则采用同步方式和服务器进行交互,即进行等待知道服务器返回响应结果为止。最后两个参数用于在进行连接时指定特定的用户名和密码。
    send(context) 函数用来向服务器发送请求。可以使用的参数包括DOM对象、字符串等等。
    setRequestHeader("header","value") 该方法为HTTP请求中给定的一个首部设置值,其中header表示要设置的首部名称,第二个参数用于指定放在首部中的值。设置header并和请求一起发送,即指定首部设置为所提供的值,注意在设置首部前必须先使用open()方法。

    除了上面的相关方法之外,XMLHttpRequest对象还提供了许多属性,相关属性名称及功能如下:
    onreadystatechange 每个状态改变是都会触发这个事件处理器,通常会调用一个javascript函数
    readState 请求状态 0=未初始化,1=正在加载 ,2=已加载 ,3=交互中,4=完成
    responseText 服务器的响应,表示为一个串 
    responseXML 服务器的响应,表示为xml.这个对象可以解析为一个DOM对象
    status 服务器的http状态码(200对应ok,404对应not found) 
    statusText       服务器的http状态码相应文本

    其中,onreadystatechange属性是状态改变的事件触发器,每个状态改变时都会触发这个事件触发器,通常在触发后会调用一个JavaScript脚本语言编写的函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值