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


             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对象的一些方法和属性。还有经典的五步法。对于这些基础的知识。还须要小伙伴们在日常的学习中,多多动手实践。实习第二个月,精彩未完待续。

  • 相关阅读:
    windows系统历年高危漏洞
    安全产品分类
    防火墙
    UTM(统一威胁管理)
    ORA-39127: 调用 "WMSYS"."LT_EXPORT_PKG"."SCHEMA_INFO_EXP" 时发生意外错误
    oracle如何查看当前有哪些用户连接到数据库
    LINUX修改主机名
    删除Oracle用户及表空间
    Oracle AWR报告详细分析--比较详细
    RMAN优缺点及RMAN备份及恢复步骤
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/7105657.html
Copyright © 2020-2023  润新知