ajax核心技术1---XMLHttpRequset对象的使用

转载 2015年07月06日 21:53:30
AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。AJAX = 异步 JavaScript和XML(标准通用标记语言的子集)。ajax是一种用于创建快速动态网页的技术。

        通过在后台与服务器进行少量数据交换,AJAX 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。从今天开始nie,小编开始和小伙伴们一起学习ajax的相关知识,这篇博文,小编主要简单的和大家介绍介绍XMLHttpRequset对象的使用,首先我们来看一下这个对象的属性还有方法,首先,我们来看属性,如下表所示:

        

        接着,我们来看方法,如下表所示:

         

         XMLHttpRequest的缩写为XHR,中文名字叫做可扩展超文本传输请求,Xml可扩展标记语言,Http超文本传输协议,Request请求。XMLHttpRequest对象可以在不向服务器提交整个页面的情况下,实现局部更新网页。当页面全部加载完毕后,客户端通过该对象向服务器请求数据,服务器端接受数据并处理后,向客户端反馈数据。 XMLHttpRequest 对象提供了对 HTTP 协议的完全的访问,包括做出 POST 和 HEAD 请求以及普通的 GET 请求的能力。XMLHttpRequest 可以同步或异步返回 Web 服务器的响应,并且能以文本或者一个 DOM 文档形式返回内容。尽管名为 XMLHttpRequest,它并不限于和 XML 文档一起使用:它可以接收任何形式的文本文档。XMLHttpRequest 对象是名为 AJAX 的 Web 应用程序架构的一项关键功能。上面的两张图片对XHR有了一定的了解,接下来,就到了实战的时候了,我们这里用经典的五步法来介绍一下:

        第一步、创建XHR对象,代码如下所示:

        

[javascript] view plaincopyprint?
  1. <span style="font-size:18px;">var xmlhttprequest;    
  2.    if(window.XMLHttpRequest){    
  3.        xmlhttprequest=new XMLHttpRequest();    
  4.        if(xmlhttprequest.overrideMimeType){    
  5.            xmlhttprequest.overrideMimeType("text/xml");    
  6.        }    
  7.    }else if(window.ActiveXObject){    
  8.        var activeName=["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];    
  9.        for(var i=0;i<activeName.length;i++){    
  10.            try{    
  11.                xmlhttprequest=new ActiveXObject(activeName[i]);    
  12.                break;    
  13.            }catch(e){    
  14.                           
  15.            }    
  16.        }    
  17.    }    
  18.        
  19.    if(xmlhttprequest==undefined || xmlhttprequest==null){    
  20.        alert("XMLHttpRequest对象创建失败!!");    
  21.    }else{    
  22.        this.xmlhttp=xmlhttprequest;    
  23.    }  </span>  

        第二步、注册回调方法:

         

[javascript] view plaincopyprint?
  1. <span style="font-size:18px;"><span style="font-size:18px;">xmlhttp.onreadystatechange=callback;    
  2. </span>  </span>  
         第三步、设置和服务器交互的相应参数:

[javascript] view plaincopyprint?
  1. <span style="font-size:18px;"><span style="font-size:18px;"> xmlhttp.open("GET","ajax?name=" +userName,true);    
  2. </span></span>  
         第四步、设置向服务器端发送的数据,启动和服务器端的交互:
[javascript] view plaincopyprint?
  1. <span style="font-size:18px;"><span style="font-size:18px;">  xmlhttp.send(null);</span> </span>  
         第五步、判断和服务器端的交互是否完成,还要判断服务器端是否返回正确的数据:

[javascript] view plaincopyprint?
  1. <span style="font-size:18px;"><span style="font-size:18px;">//根基实际条件写callback的功能代码    
  2. function callback(){    
  3.      if(xmlhttp.readState==4){    
  4.          //表示服务器的相应代码是200;正确返回了数据     
  5.         if(xmlhttp.status==200){     
  6.             //纯文本数据的接受方法     
  7.             var message=xmlhttp.responseText;     
  8.             //使用的前提是,服务器端需要设置content-type为text/xml     
  9.             //var domXml=xmlhttp.responseXML;     
  10.             //其它代码    
  11.          }     
  12.     }    
  13.  }    
  14. </span> </span>  
           通过这五步XMLHttpRequest基本上就创建好,可以正常使用了,如上面所示的,代码量有点多,导致每次创建的时候,我们都需要写如此多的代码,所以,我们可以将相同的部分抽象出来,使之成为一个独立的类,下面的是小编从网上搜索的一个,供小伙伴们参考一下`(*∩_∩*)′,不用客气!代码如下所示:

[javascript] view plaincopyprint?
  1. <span style="font-size:18px;">//类的构建定义,主要职责就是新建XMLHttpRequest对象    
  2. var MyXMLHttpRequest=function(){    
  3.     var xmlhttprequest;    
  4.     if(window.XMLHttpRequest){    
  5.         xmlhttprequest=new XMLHttpRequest();    
  6.         if(xmlhttprequest.overrideMimeType){    
  7.             xmlhttprequest.overrideMimeType("text/xml");    
  8.         }    
  9.     }else if(window.ActiveXObject){    
  10.         var activeName=["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];    
  11.         for(var i=0;i<activeName.length;i++){    
  12.             try{    
  13.                 xmlhttprequest=new ActiveXObject(activeName[i]);    
  14.                 break;    
  15.             }catch(e){    
  16.                            
  17.             }    
  18.         }    
  19.     }    
  20.         
  21.     if(xmlhttprequest == undefined || xmlhttprequest == null){    
  22.         alert("XMLHttpRequest对象创建失败!!");    
  23.     }else{    
  24.         this.xmlhttp=xmlhttprequest;    
  25.     }    
  26.         
  27.     //用户发送请求的方法    
  28.     MyXMLHttpRequest.prototype.send=function(method,url,data,callback,failback){    
  29.         if(this.xmlhttp!=undefined && this.xmlhttp!=null){    
  30.             method=method.toUpperCase();    
  31.             if(method!="GET" && method!="POST"){    
  32.                 alert("HTTP的请求方法必须为GET或POST!!!");    
  33.                 return;    
  34.             }    
  35.             if(url==null || url==undefined){    
  36.                 alert("HTTP的请求地址必须设置!");    
  37.                 return ;    
  38.             }    
  39.             var tempxmlhttp=this.xmlhttp;    
  40.             this.xmlhttp.onreadystatechange=function(){    
  41.                 if(tempxmlhttp.readyState==4){    
  42.                     if(temxmlhttp.status==200){    
  43.                         var responseText=temxmlhttp.responseText;    
  44.                         var responseXML=temxmlhttp.reponseXML;    
  45.                         if(callback==undefined || callback==null){    
  46.                             alert("没有设置处理数据正确返回的方法");    
  47.                             alert("返回的数据:" + responseText);    
  48.                         }else{    
  49.                             callback(responseText,responseXML);    
  50.                         }    
  51.                     }else{    
  52.                         if(failback==undefined ||failback==null){    
  53.                             alert("没有设置处理数据返回失败的处理方法!");    
  54.                             alert("HTTP的响应码:" + tempxmlhttp.status + ",响应码的文本信息:" + tempxmlhttp.statusText);    
  55.                         }else{    
  56.                             failback(tempxmlhttp.status,tempxmlhttp.statusText);    
  57.                         }    
  58.                     }    
  59.                 }    
  60.             }    
  61.                 
  62.             //解决缓存的转换    
  63.             if(url.indexOf("?")>=0){    
  64.                 url=url + "&t=" + (new Date()).valueOf();    
  65.             }else{    
  66.                 url=url+"?+="+(new Date()).valueOf();    
  67.             }    
  68.                 
  69.             //解决跨域的问题    
  70.             if(url.indexOf("http://")>=0){    
  71.                 url.replace("?","&");    
  72.                 url="Proxy?url=" +url;    
  73.             }    
  74.             this.xmlhttp.open(method,url,true);    
  75.                 
  76.             //如果是POST方式,需要设置请求头    
  77.             if(method=="POST"){    
  78.                 this.xmlhttp.setRequestHeader("Content-type","application/x-www-four-urlencoded");    
  79.             }    
  80.             this.xmlhttp.send(data);    
  81.     }else{    
  82.         alert("XMLHttpRequest对象创建失败,无法发送数据!");    
  83.     }    
  84.     MyXMLHttpRequest.prototype.abort=function(){    
  85.         this.xmlhttp.abort();    
  86.     }    
  87.   }    
  88. }  </span>  
        小编寄语:这篇博客,小编主要简单的介绍了一下XHR对象的一些方法和属性,还有经典的五步法,对于这些基础的知识,还需要小伙伴们在日常的学习中,多多动手实践,实习第二个月,精彩未完待续。

相关文章推荐

ajax核心技术1---XMLHttpRequset对象的使用

AJAX即“Asynchronous Javascript And XML”(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术。AJAX = 异步 JavaScript和X...

Ajax核心技术之XMLHttpRequest对象

XMLHttpRequest对象到底是什么?跟Ajax到底有什么联系?在了解它之前还是要先了解一下Ajax的功能。与以往的技术不同,Ajax是为了实现异步操作。          那么关于异步,好像...

JAVA基础【4.1】《Java核心技术1》对象与类

前言:知识是一个认知的过程,学习知识的方法有很多,最常见的莫过于通过书本去学习知识。笔者从毕业转行从事JAVA到现在,深深感到,知识不可无体系,感觉见过的知识点很多,却又说不出到底Java这门语言掌握...
  • aiowang
  • aiowang
  • 2017年01月12日 15:18
  • 171

Java核心技术:卷1笔记[2] 对象和类

1.类之间最常见关系        1)依赖(“use-a”)一个类的方法操作了另一个类的对象        2)聚合(“has-a”)        3)继承(“is-a”) 2.对象变量并...

2015 6 28 java核心技术 卷1 第4章 对象与类

第四章 对象与类 算法 + 数据结构 = 程序 结构化程序设计通过设计一系列的过程(即算法)来求解问题。一旦确定了这些过程,就要开始考虑存储数据的方式。算法是第一位的,数据结构是第二位的。 ...

Ajax的核心技术XMLHttpRequest方法

整个Ajax技术紧紧围绕在XMLHttpRequest对象的周围,Ajax整个技术的过程如下:XMLHttpRequest发送请求,在与服务器交互中,其readyState状态可以监听到服务器 的响...

小博老师解析Java核心技术 ——AJAX第三弹

[引言] 前二回小傅老师给大伙讲解了AJAX的原理与底层实现,很多小伙伴发信给我说“老师,前端JS代码太多了。一个问题找了个半天,原来是个单词拼错了:-(。有没有简单点的方法实现AJAX啊?”真是应...
  • bwf_erg
  • bwf_erg
  • 2017年01月23日 22:09
  • 195

小博老师解析JavaWeb核心技术 ——AJAX第一弹

[引言] AJAX是目前Web编程中最流行的技术之一,它是Web2.0技术的核心,全称为Asynchronous JavaScript and XML 中文名称定义为异步的JavaScript和...
  • bwf_erg
  • bwf_erg
  • 2017年01月22日 20:06
  • 100

小博老师解析 Ajax核心技术 ——Ajax原理及优缺点

[引言] AJAX全称为“Asynchronous JavaScript and XML”(异步JavaScript和XML)。是一种创建交互式网页应用的网页开发技术。它使用: 使用XHTML+C...
  • bwf_erg
  • bwf_erg
  • 2016年12月01日 14:08
  • 84

小博老师解析Java核心技术 ——AJAX第二弹

[引言] 上一回小博老师和大家聊了AJAX的原理与对应前端实现代码,那服务器是怎么接收客户端的请求并作出回应的呢。这回小博老师与大伙唠唠,AJAX的完整执行流程与服务器侧代码的实现。   [执行...
  • bwf_erg
  • bwf_erg
  • 2017年01月22日 21:57
  • 74
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ajax核心技术1---XMLHttpRequset对象的使用
举报原因:
原因补充:

(最多只允许输入30个字)