【AJAX】XMLHTTPRequest对象

    在上一篇博客中,我们了解到了AJAX方式下的Web应用程序与传统方式下的Web应用程序有着一个最大的不同之处是:数据传输中不用刷新整个网页,给带来了一种不一样的用户体验。这种技术的核心就是利用的XMLHTTPRequest对象。

    那么,这篇博客就一起来学习XMLHTTPRequest对象。

    一.什么是XMLHTTPRequest。

    中文可以解释为可扩展超文本传输请求。Xml可扩展标记语言,Http超文本传输协议,Request请求。

    XMLHttpRequest 对象用于在后台与服务器交换数据。

    XMLHttpRequest 对象是开发者的梦想,因为您能够:在不重新加载页面的情况下更新网页;在页面已加载后从服务器请求数据;在页面已加载后从服务器接收数据;在后台向服务器发送数据。

    所有现代的浏览器都支持 XMLHttpRequest 对象。

    二.XMLHTTPRequest对象的属性。

    

属性 描述 详细说明
readyState HTTP 请求的状态.当一个 XMLHttpRequest 初次创建时,这个属性的值从 0 开始,直到接收到完整的 HTTP 响应,这个值增加到 4。 0-Uninitialized-初始化状态。XMLHttpRequest 对象已创建或已被 abort() 方法重置。

1-Open-open() 方法已调用,但是 send() 方法未调用。请求还没有被发送。

2-Send-Send() 方法已调用,HTTP 请求已发送到 Web 服务器。未接收到响应。

3-Receiving-所有响应头部都已经接收到。响应体开始接收但未完成。

4-Loaded-HTTP 响应已经完全接收。

responseText 目前为止从服务器接收到的响应体(不包括头部),或者如果还没有接收到数据的话,就是空字符串。 如果 readyState 小于 3,这个属性就是一个空字符串。当 readyState 为 3,这个属性返回目前已经接收的响应部分。如果 readyState 为 4,这个属性保存了完整的响应体。
responseXML 对请求的响应,解析为 XML 并作为 Document 对象返回。如果响应体不是“text/xml”返回null。
status 由服务器返回的 HTTP 状态代码 如 200 表示成功,而 404 表示 "Not Found" 错误。当 readyState 小于 3 的时候读取这一属性会导致一个异常。
statusText 这个属性用名称而不是数字指定了请求的 HTTP 的状态代码。 当状态为 200 的时候它是 "OK",当状态为 404 的时候它是 "Not Found"。和 status 属性一样,当 readyState 小于 3 的时候读取这一属性会导致一个异常。

    三.XMLHTTPRequest对象的方法

    

方法 描述 详细说明

open(string method,string url,boolean asynch,

String username,string password)

初始化 HTTP 请求参数,例如 URL 和 HTTP 方法,但是并不发送请求。
Method:表示http请求方法,一般使用"GET","POST".

url:表示请求的服务器的地址;

asynch:表示是否采用异步方法,true为异步,false为同步;

后边两个可以不指定,username和password分别表示用户名和密码,提供http认证机制需要的用户名和密码。

send(content) 发送 HTTP 请求,使用传递给 open() 方法的参数,以及传递给该方法的可选请求体。 content可以指定为null表示不发送数据,其内容可以是DOM对象,输入流或字符串。
setRequestHeader(String header,String Value) 向一个打开但未发送的请求设置或添加一个 HTTP 请求。 此方法需在open方法以后调用,一般在post方式中使用。

getResponseHeader(String header)


返回指定的 HTTP 响应头部的值。

其参数是要返回的 HTTP 响应头部的名称。可以使用任何大小写来制定这个头部名字,不区分大小写。

该方法的返回值是指定的 HTTP 响应头部的值

如果没有接收到头部或者 readyState 小于 3 则为空字符串。如果接收到多个有指定名称的头部,这个头部的值被连接起来并返回,使用逗号和空格分隔开各个头部的值。
Abort() 停止当前http请求。对应的XMLHttpRequest对象会复位到未初始化的状态。 把 XMLHttpRequest 对象重置为 readyState 为 0 的状态,并且取消所有未决的网络活动。例如,如果请求用了太长时间,而且响应不再必要的时候,可以调用这个方法。

getAllResponseHeaders()

 

把 HTTP 响应头部作为未解析的字符串返回。 如果 readyState 小于 3,这个方法返回 null。否则,它返回服务器发送的所有 HTTP 响应的头部。头部作为单个的字符串返回,一行一个头部。每行用换行符 "" 隔开。

    四.XMLHTTPRequest对象五步使用法

    对于XMLHTTPRequest对象已有了一个理论认识,下面就介绍如何使用它的经典五步法。

    第一步:创建XMLHTTPRequest对象  

 var xmlhttprequest;
   if(window.XMLHttpRequest){
       xmlhttprequest=new XMLHttpRequest();
       if(xmlhttprequest.overrideMimeType){
           xmlhttprequest.overrideMimeType("text/xml");
       }
   }else if(window.ActiveXObject){
       var activeName=["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];
       for(var i=0;i<activeName.length;i++){
           try{
               xmlhttprequest=new ActiveXObject(activeName[i]);
               break;
           }catch(e){ 

           }
       }
   } 

   if(xmlhttprequest==undefined || xmlhttprequest==null){
       alert("XMLHttpRequest对象创建失败!!");
   }else{
       this.xmlhttp=xmlhttprequest;
   } 

    第二步:注册回调方法    

//2.注册回调方法
     xmlhttp.onreadystatechange=callback;
    //错误的写法callback();  

    第三步:设置和服务器交互的相应参数 

 /*
    //GET方式交互
    //设置和服务器端交互的相应参数
    xmlhttp.open("GET","AjaxServer?name="+userName,true);
    */
    /*
    //POST方式交互
    //设置和服务器端交互的相应参数
    xmlhttp.open("POST","AjaxServer",true);
    //POST方式交互所需要增加的代码
    xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
    */ 

    第四步: 设置向服务器端发送的数据,启动和服务器端的交互  

//4.设置向服务器端发送的数据,启动和服务器端的交互
    //GET方式
    xmlhttp.send(null);
    //POST方式
    //4.设置向服务器端发送的数据,启动和服务器端的交互
    xmlhttp.send("name="+userName);   

    第五步:判断和服务器端的交互是否完成,还要判断服务器端是否返回正确的数据  

//根基实际条件写callback的功能代码
function callback(){
     if(xmlhttp.readState==4){
         //表示服务器的相应代码是200;正确返回了数据
        if(xmlhttp.status==200){
            //纯文本数据的接受方法
            var message=xmlhttp.responseText;
            //使用的前提是,服务器端需要设置content-type为text/xml
            //var domXml=xmlhttp.responseXML;
            //其它代码
         }
    }
 } 

    五.学习总结

    以上是对XMLHTTPRequest对象基础的总结,初次接触,没有什么很深刻的体会,而对于后面了解到的内容,使用它会有一些扩展性的问题,如:“缓存问题”、“中文问题”以及“跨域问题”,也觉得应该是后面在项目实践中都要考虑的方面。并且,在以后的开发中,为了更好的用户体验,也是一定会用到AJAX这一技术,而上面的五步法也就是用到它时必不可少的一块代码,期待以后见证它的使用时刻~

    

    

时间: 2024-11-03 22:16:31

【AJAX】XMLHTTPRequest对象的相关文章

AJAX XMLHttpRequest对象详解_AJAX相关

AJAX是一种创建交互式网页应用的网页开发技术,是异步Javascript和XML的集合.其核心是XMLHttpRequest对象,可以在不向服务器端提交整个页面的情况下,实现局部更新网页,它是AJAX的Web应用程序架构的一项关键技术. 基本属性: 基本方法: XMLHttpRequest五步法:       第一:创建XMLHttpRequest对象 第二:注册回调函数 第三:设置和服务器交互的参数 第四:设置向服务器端发送的数据,启动和服务器端的交互 第五:判断和服务器端的交互是否完成,还

AJAX XMLHttpRequest对象详解

XMLHttpRequest对象是当今所有AJAX和Web 2.0应用程序的技术基础.尽管软件经销商和开源社团现在都在提供各种AJAX框架以进一步简化XMLHttpRequest对象的使用:但是,我们仍然很有必要理解这个对象的详细工作机制. 一.引言 异步JavaScript与XML(AJAX)是一个专用术语,用于实现在客户端脚本与服务器之间的数据交互过程.这一技术的优点在于,它向开发者提供了一种从Web服务器检索数据而不必把用户当前正在观察的页面回馈给服务器.与现代浏览器的通过存取浏览器DOM

AJAX XMLHttpRequest 对象使用详解 (一)

事实上,有时您会发现,要正确地使用 XMLHttpRequest,显然不能 使用 XMLHttpRequest.这到底是怎么回事呢? Web 2.0 一瞥 在深入研究代码之前首先看看最近的观点 -- 一定要十分清楚 Web 2.0 这个概念.听到 Web 2.0 这个词的时候,应该首先问一问 "Web 1.0 是什么?" 虽然很少听人提到 Web 1.0,实际上它指的就是具有完全不同的请求和响应模型的传统 Web.比如,到 Amazon.com 网站上点击一个按钮或者输入搜索项.就会对

AJAX客户端说明,XMLHttpRequest对象

ajax|request|xml|xmlhttprequest|对象|客户端 在CommunityServer中运用了自己的AJAX机制,没有借助其他的辅助控件.其中客户的XMLHttpRequest对象的封装,就足以让人大饱眼福,在一般的浏览器其都能够运行AJAX.下面我们来学习学习这个咚咚,希望能给更多的人带来帮助.  首先当然是要了解一下浏览器中的XMLHttp对象了:  XMLHTTP方法:           备注:客户机可以使用XMLHTTP对象发送任意的HTTP请求,接受HTTP应

AJAX核心对象-- XMLHttpRequest 对象使用详解 (一)

ajax|request|xml|xmlhttprequest|对象|详解 多数 Web 应用程序都使用请求/响应模型从服务器上获得完整的HTML 页面.常常是点击一个按钮,等待服务器响应,再点击另一个按钮,然后再等待,这样一个反复的过程.有了 Ajax 和 XMLHttpRequest 对象,就可以使用不必让用户等待服务器响应的请求/响应模型了. 本文中,Brett McLaughlin 介绍了如何创建能够适应不同浏览器的 XMLHttpRequest 实例,建立和发送请求,并响应服务器. 本

AJAX核心对象-- XMLHttpRequest 对象使用详解 (二)

ajax|request|xml|xmlhttprequest|对象|详解 挑战异步性 本文的后面,我将用很多时间编写和使用异步代码,但是您应该明白为什么 open() 的最后一个参数这么重要.在一般的请求/响应模型中,比如 Web 1.0,客户机(浏览器或者本地机器上运行的代码)向服务器发出请求.该请求是同步的,换句话说,客户机等待服务器的响应.当客户机等待的时候,至少会用某种形式通知您在等待: ·沙漏(特别是 Windows 上). ·旋转的皮球(通常在 Mac 机器上). ·应用程序基本上

Ajax基础教程(2)-使用XMLHttpRequest对象 2.9 小结

尽管Ajax风格的技术已经用了很多年,但直到最近XMLHttpRequest对象才得到现代浏览器的采纳,而这也为开发丰富的Web应用开启了一个新的时代.在本章中,我们讨论了Ajax核心(即XMLHttpRequest对象)的相关基础知识.我们了解了XMLHttpRequest对象的方法和属性,而且展示了使用XMLHttpRequest对象的简单示例.可以看到,这个对象相当简单,无需你考虑其中很多的复杂性.适当地使用JavaScript,再加上基本的DOM管理,Ajax可以提供高度的交互性,而这在

Ajax基础教程(2)-使用XMLHttpRequest对象 2.7 DOM Level 3 加载和保存规约

到目前为止,我们讨论的解决方案都不是标准.尽管XMLHttpRequest得到了广泛支持,但是你已经看到了,创建XMLHttpRequest对象的过程会随浏览器不同而有所差异.许多人错误地认为Ajax得到了W3C的支持,但实际上并非如此.W3C在一个新标准中解决了这一问题以及其他缺点,这个标准的名字相当长:DOM Level 3 加载和保存规约.这个规约的设计目的是以一种独立于平台和语言的方式,用XML内容修改DOM文档的内容.2004年4月提出了1.0版本,但到目前为止,还没有浏览器实现这个规

Ajax基础教程(2)-使用XMLHttpRequest对象 2.4 GET与POST

你可能想了解GET和POST之间有什么区别,并想知道什么时候使用它们.从理论上讲,如果请求是幂等的就可以使用GET,所谓幂等是指多个请求返回相同的结果.实际上,相应的服务器方法可能会以某种方式修改状态,所以一般情况下这是不成立的.这只是一种标准.更实际的区别在于净荷的大小,在许多情况下,浏览器和服务器会限制URL的长度URL用于向服务器发送数据.一般来讲,可以使用GET从服务器获取数据:换句话说,要避免使用GET调用改变服务器上的状态. 一般地,当改变服务器上的状态时应当使用POST方法.不同于

Ajax基础教程(2)-使用XMLHttpRequest对象 2.3 交互示例

看到这里,你可能想知道典型的Ajax交互是什么样.图2-1显示了Ajax应用中标准的交互模式. 图2-1 标准Ajax交互 不同于标准Web客户中所用的标准请求/响应方法,Ajax应用的做法稍有差别. 1. 一个客户端事件触发一个Ajax事件.从简单的onchange事件到某个特定的用户动作,很多这样的事件都可以触发Ajax事件.可以有如下的代码: <input type="text"d="email" name="email" onblu