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
瀏覽器在伺服器送回的資料未含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选项里放开吧),异步/同步 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就通用多了:)
[Web开发]AJAX来判断dedecms用户是否登录 [Web开发]XML与HTML在语法上的主要区别详解 [系统软件]如何让Expat支持中文XML [VB.NET程序]vb.net 与 XML 的操作 [VB.NET程序]vb.net读写xml(2)--实现datagrid与xml的沟通(原创… [VB.NET程序]vb.net 读写xml方法(1) [VB.NET程序][VB.NET+XML]完成简单程序配置 [VB.NET程序]使用Visual Basic操纵XML文档 [VB.NET程序]XML 简单接口 (SAX2)用Visual Basic 实现的示例 [Delphi程序]DELPHI6抢先研究:WebService/SOAP版的Hello worl…
|