zoukankan      html  css  js  c++  java
  • AJAX和SOAP——异步数据和XML获取

    AJAX:原文Asynchronous Javascript and XML applications,其实就是那些通过javascript来异步取得xml数据的应用!

    我觉得这个缩写最狭隘了,因为我完全可以把JS换成VBS嘛,那不就可以缩写成AVAX了?!

    从这点上说,远不如SOAP,它的原文应该是Simple Object Access Protocol,简单对象访问协议(汗哪,我也不敢确认呢。其实使用的对象和技术就是XMLHTTP)。它就标准和广义多了,指的是所有通过客户端SCRIPT来异步取得XML数据的应用,自然包括JS、VBS或其它脚本了。

    给个小例子:

    <script type="text/javascript">
    <!--
    function ajaxRead(file){
      
    var xmlObj = null;
      
    if(window.XMLHttpRequest)//如果浏览器直接支持window.XMLHttpRequest对象
          xmlObj = new XMLHttpRequest();
          
    if (xmlObj.overrideMimeType) {xmlObj.overrideMimeType('text/xml');}//防止有些版本的Mozilla瀏覽器在伺服器送回的資料未含XML mime-type檔頭(header)時出錯
      }
     else if(window.ActiveXObject)//如果浏览器支持window.ActiveXObject对象
        try {
            xmlObj 
    = new ActiveXObject("Msxml2.XMLHTTP");
        }
     catch (e) {
            
    try {
                xmlObj 
    = new ActiveXObject("Microsoft.XMLHTTP");
            }
     catch (e) {}
        }

      }
     else {
          
    return//浏览器啥都不支持,我也只有啥都不干了:p
      }

      
    if (!xmlObj) {
     alert('Giving up :( Cannot create an XMLHTTP instance');
     
    return;
      }


      xmlObj.onreadystatechange 
    = function()//当xmlobj在异步执行方式下状态发生变化时触发本事件
        if(xmlObj.readyState == 4){
     
    if (xmlObj.status == 200//HTTP状态码,未出错。可参考.statusText
            document.getElementById('xmlObj').firstChild.data = xmlObj.responseXML.getElementsByTagName('data')[0].firstChild.data; //document.getElementById('xmlObj')的.firstChild.data也可换成.innerHTML
     }
     else {
         alert('There was a problem 
    with the request.');
         
    return;
     }

        }

      }


      xmlObj.open ('GET', file, true); //打开连接:请求方式,文件名(基於安全考量,你不能叫用同網域以外的網頁。但你应该可以在IE的internet选项里放开吧),异步/同步

    注:
    XMLHttpRequest对象的状态总共有五个状态,由0走到4。
    0 – 尚未初始化(在这个XMLHttpRequest开始前)
    1 – 加载(XMLHttpRequest初始化一结束)
    2 – 加载结束(XMLHttpRequest一从服务器上获得一个回应)
    3 – 交互(当XMLHttpRequest对象和服务器连接中)
    4 – 结束(当XMLHttpRequest被告知它已经完成了所有人物并结束运行)

    IE5以上支持~~
    除了XMLHTTP对象外,还涉及CSS和DOM技术。

    优势:
    消除了每次同服务器交互都必须整个页面进行刷新。
    更快地同服务器进行交互,部分页面永远比要求服务器返回整个页面的数量流量小很多。


    山风(Lanyd)寄语:
    其实,不一定非要XMLHTTP,难道说TXT文件就不能通过HTTP来异步访问了?如果有人提供了一个具有XMLHTTP功能的TXTHTTP对象,我们就可以实现了(只是以前一直没人有这个想法罢了)。其实,目前XMLHTTP就已经支持TXT,用XMLHTTP.repsponeText就能得到。只不过,XML比TXT的描述统一和标准得多,还是那句话,TXT可以完全自定义,XML就通用多了:)

      xmlObj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); //如果.open以POST方式打开
      xmlObj.send (''); //必须执行此指令,否则XMLHttpRequest对象的状态不会变为4!
    }
    //-->
    </script>
     

    Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=653090

  • 相关阅读:
    Oracle 11g SQL Fundamentals Training Introduction02
    Chapter 05Reporting Aggregated data Using the Group Functions 01
    Chapter 01Restriicting Data Using The SQL SELECT Statemnt01
    Oracle 11g SQL Fundamentals Training Introduction01
    Chapter 04Using Conversion Functions and Conditional ExpressionsConditional Expressions
    Unix时代的开创者Ken Thompson (zz.is2120.bg57iv3)
    我心目中计算机软件科学最小必读书目 (zz.is2120)
    北京将评估分时分区单双号限行 推进错时上下班 (zz)
    佳能G系列领军相机G1X
    选购单反相机的新建议——心民谈宾得K5(转)
  • 原文地址:https://www.cnblogs.com/ghx88/p/425710.html
Copyright © 2011-2022 走看看