码迷,mamicode.com
首页 > Web开发 > 详细

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

时间:2017-07-02 13:10:16      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:开发   on()   active   dex   his   open   web   obj   sync   

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

AJAX = 异步 JavaScript和XML(标准通用标记语言的子集)。ajax是一种用于创建高速动态网页的技术。


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

        技术分享

        接着,我们来看方法。例如以下表所看到的:

         技术分享

         XMLHttpRequest的缩写为XHR。中文名字叫做可扩展超文本传输请求,Xml可扩展标记语言。Http超文本传输协议,Request请求。

XMLHttpRequest对象能够在不向server提交整个页面的情况下,实现局部更新网页。当页面所有载入完毕后。client通过该对象向server请求数据,server端接受数据并处理后。向client反馈数据。

XMLHttpRequest 对象提供了对 HTTP 协议的全然的訪问,包含做出 POST 和 HEAD 请求以及普通的 GET 请求的能力。XMLHttpRequest 能够同步或异步返回 Web server的响应。而且能以文本或者一个 DOM 文档形式返回内容。虽然名为 XMLHttpRequest,它并不限于和 XML 文档一起使用:它能够接收不论什么形式的文本文档。XMLHttpRequest 对象是名为 AJAX 的 Web 应用程序架构的一项关键功能。上面的两张图片对XHR有了一定的了解。接下来,就到了实战的时候了,我们这里用经典的五步法来介绍一下:

        第一步、创建XHR对象。代码例如以下所看到的:

        

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; }

        第二步、注冊回调方法:

         

<span style="font-size:18px;">xmlhttp.onreadystatechange=callback;  
</span>  
         第三步、设置和server交互的对应參数:

<span style="font-size:18px;"> xmlhttp.open("GET","ajax?name=" +userName,true);  
</span>
         第四步、设置向server端发送的数据,启动和server端的交互:
<span style="font-size:18px;">  xmlhttp.send(null);</span> 
         第五步、推断和server端的交互是否完毕。还要推断server端是否返回正确的数据:

<span style="font-size:18px;">//根基实际条件写callback的功能代码  
function callback(){  
     if(xmlhttp.readState==4){  
         //表示server的对应代码是200;正确返回了数据   
        if(xmlhttp.status==200){   
            //纯文本数据的接受方法   
            var message=xmlhttp.responseText;   
            //使用的前提是。server端须要设置content-type为text/xml   
            //var domXml=xmlhttp.responseXML;   
            //其他代码  
         }   
    }  
 }  
</span> 
           通过这五步XMLHttpRequest基本上就创建好,能够正常使用了,如上面所看到的的,代码量有点多。导致每次创建的时候,我们都须要写如此多的代码,所以,我们能够将同样的部分抽象出来。使之成为一个独立的类,以下的是小编从网上搜索的一个,供小伙伴们參考一下`(*∩_∩*)′。不用客气!代码例如以下所看到的:

//类的构建定义,主要职责就是新建XMLHttpRequest对象  
var MyXMLHttpRequest=function(){  
    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; } //用户发送请求的方法 MyXMLHttpRequest.prototype.send=function(method,url,data,callback,failback){ if(this.xmlhttp!=undefined && this.xmlhttp!=null){ method=method.toUpperCase(); if(method!="GET" && method!="POST"){ alert("HTTP的请求方法必须为GET或POST!!!"); return; } if(url==null || url==undefined){ alert("HTTP的请求地址必须设置!

"); return ; } var tempxmlhttp=this.xmlhttp; this.xmlhttp.onreadystatechange=function(){ if(tempxmlhttp.readyState==4){ if(temxmlhttp.status==200){ var responseText=temxmlhttp.responseText; var responseXML=temxmlhttp.reponseXML; if(callback==undefined || callback==null){ alert("没有设置处理数据正确返回的方法"); alert("返回的数据:" + responseText); }else{ callback(responseText,responseXML); } }else{ if(failback==undefined ||failback==null){ alert("没有设置处理数据返回失败的处理方法!

"); alert("HTTP的响应码:" + tempxmlhttp.status + ",响应码的文本信息:" + tempxmlhttp.statusText); }else{ failback(tempxmlhttp.status,tempxmlhttp.statusText); } } } } //解决缓存的转换 if(url.indexOf("?")>=0){ url=url + "&t=" + (new Date()).valueOf(); }else{ url=url+"?+="+(new Date()).valueOf(); } //解决跨域的问题 if(url.indexOf("http://")>=0){ url.replace("?

","&"); url="Proxy?

url=" +url; } this.xmlhttp.open(method,url,true); //假设是POST方式,须要设置请求头 if(method=="POST"){ this.xmlhttp.setRequestHeader("Content-type","application/x-www-four-urlencoded"); } this.xmlhttp.send(data); }else{ alert("XMLHttpRequest对象创建失败,无法发送数据!

"); } MyXMLHttpRequest.prototype.abort=function(){ this.xmlhttp.abort(); } } }

        小编寄语:这篇博客,小编主要简单的介绍了一下XHR对象的一些方法和属性。还有经典的五步法。对于这些基础的知识。还须要小伙伴们在日常的学习中,多多动手实践。实习第二个月,精彩未完待续。

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

标签:开发   on()   active   dex   his   open   web   obj   sync   

原文地址:http://www.cnblogs.com/zhchoutai/p/7105657.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!