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

  • 相关阅读:
    python函数及模块
    Python分支结构及循环结构
    python基本的知识
    11.21学习总结
    进度日报28
    进度日报27
    进度日报26
    进度日报25
    进度日报24
    11.14学习总结
  • 原文地址:https://www.cnblogs.com/ghx88/p/425710.html
Copyright © 2011-2022 走看看