IT新技術名詞:AJAX和SOAP——非同步資料和XML擷取

來源:互聯網
上載者:User
ajax|xml|資料|非同步

IT新技術名詞:AJAX和SOAP——非同步資料和XML擷取

AJAX:原文Asynchronous Javascript and XML applications,其實就是那些通過javascript來非同步取得xml數

據的應用!

我覺得這個縮寫最狹隘了,因為我完全可以把JS換成VBS嘛,那不就可以縮寫成AVAX了?!

從這點上說,遠不如SOAP,它的原文應該是Simple Object Access Protocol,簡易物件存取通訊協定 (SOAP)(汗哪,我也

不敢確認呢。其實使用的對象和技術就是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

?g?[器在伺服器送回的?Y料未含XML mime-type?n?^(header)?r出?e
  } 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); //開啟串連:請求方式,檔案名稱(基於安全考量,你不能叫用同?W域以

外的?W??。但你應該可以在IE的internet選項裡放開吧),非同步/同步
  xmlObj.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); //如果.open以POST

方式開啟
  xmlObj.send (''); //必須執行此指令,否則XMLHttpRequest對象的狀態不會變為4!
}
//-->
</script>

註:
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就通用多了:)



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.