DIV CSS 佈局教程網

 DIV+CSS佈局教程網 >> 網頁腳本 >> JavaScript入門知識 >> AJAX入門 >> AJAX詳解 >> IT新技術名詞:AJAX和SOAP——異步數據
IT新技術名詞:AJAX和SOAP——異步數據
編輯:AJAX詳解     

IT新技術名詞: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

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

XML學習教程| jQuery入門知識| AJAX入門| Dreamweaver教程| Fireworks入門知識| SEO技巧| SEO優化集錦|
Copyright © DIV+CSS佈局教程網 All Rights Reserved