posts - 6,  comments - 10,  trackbacks - 0
          原文http://www.jsfchina.org/pages/ViewArticles.jsf
          去年開始看AJAX時候所寫的第一個小程序,整理了下。應該算AJAX最簡單的應用了。
          ?
          首先,演示一下實際運行的效果。點擊彈出新頁面中的“See Author”鏈接,你將會看到該頁面作者。從頁面提交到顯示從服務器獲得的結(jié)果,這段過程你將不會發(fā)現(xiàn)頁面的重刷新。
          下面給出該示例的代碼:
          1. ajax.html
          <html>
          <head>
          <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
          <title>A simple AJAX example</title>
          <script type="text/javascript"><!--
          ? function findAuthor(file){
          ???? var xmlObj = null;
          ??? ?if(window.XMLHttpRequest){
          ???? ?? xmlObj = new XMLHttpRequest();
          ?? ? } else if(window.ActiveXObject){
          ????? ?? xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
          ?? ? } else {
          ????? return;
          ? ? }
          ?? ?xmlObj.onreadystatechange = function(){
          ???? ? if(xmlObj.readyState == 4){
          ?????? ??? updateObj('author',
          ?????? ?xmlObj.responseXML.getElementsByTagName('name')[0].firstChild.data);
          ??? ?? }
          ?????}
          ??? xmlObj.open ('GET', file, true);
          ??? xmlObj.send ('');
          ? }
          ? function updateObj(obj, data){
          ?? var textNode = document.createTextNode(data);
          ?? document.getElementById(obj).appendChild(textNode);
          ? }
          ? //--></script>
          </head>
          <body>
          <h1>A simple AJAX program</h1>
          <p id="obj">This page is powered by <a id='link' href="data.xml"
          ?title="View the author."
          ?onclick="findAuthor('data.xml'); this.style.display='none'; return false">See
          Author.</a><span id="author" style="color: olive; font-weight: bolder"></span></p>
          </body>
          </html>

          ?

          2.data.xml

          <?xml version="1.0" encoding="UTF-8"?>
          <author>
          ?<name>www.jsfchina.org</name>
          </author>

          ?

          解析下。

          該例應該算是最簡單的ajax應用了。為了盡求簡單性,這里沒有使用到任何服務器端技術(shù),諸如servlet,cgi等等。這里并沒有使用到任何業(yè)務方法,而是直接從服務器的一個xml文檔(data.xml)中讀取數(shù)據(jù)。為了簡潔性,本例將JavaScript文件也集成到了ajax.html中,實際應用中完全可以獨立出去使用。

          該例通過點擊鏈接,激發(fā)了一個javascript的方法然后進行交互處理。

          AJAX的核心是XMLHttpRequest,本例通過下列代碼創(chuàng)建這個對象

          ? var xmlObj = null;
          ? if(window.XMLHttpRequest){
          ????? xmlObj = new XMLHttpRequest();
          ? } else if(window.ActiveXObject){
          ????? xmlObj = new ActiveXObject("Microsoft.XMLHTTP");
          ? } else {
          ????? return;
          ? }

          if(window.XMLHttpRequest)處理了瀏覽器是mozilla的情況,而if(window.ActiveXObject)則處理了瀏覽器為IE的情況,目的都是一個:創(chuàng)建了一個XMLHttpRequest對象。創(chuàng)建這個對象的目的就是讓XMLHttpRequest對象與服務器交互,而不影響用戶正在瀏覽的頁面。這也是AJAX稱謂的由來,異步javascript交互xml處理。

          創(chuàng)建好XMLHttpRequest對象之后,調(diào)用的函數(shù)將會監(jiān)聽該對象狀態(tài)的變化,即onreadystatechange屬性。XMLHttpRequest對象有5個狀態(tài),從0-4的整數(shù),也就是說onreadystatechange調(diào)用的函數(shù)(示例中function(){...})將會執(zhí)行4次。示例中我們在該對象處于完成狀態(tài)(readyState=4)時進行處理(此時服務器已經(jīng)傳回所有信息),為id為“author”的span對象添加了一個textNode節(jié)點,該textNode是data.xml文檔中name節(jié)點的第一個子元素的值。

          好了,這就是完成一次異步交互所需要的步驟。

          以下是一些注意點。

          第一,本例中使用的http的GET方法,你也可以使用POST,但是要設定Content-Type值,即xmlObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded"),這個方法用來設置了MIME類型。還有一點要注意,這些方法最好都大寫,否則在firefox下將沒有作用。

          第二,xmlObj.open ('GET', file, true)。該方法會建立與服務器的鏈接,‘GET’指明了http調(diào)用方法;file指明了調(diào)用的url;true指明了該調(diào)用是異步處理,可以省略,默認為'true'。

          第三,xmlObj.send(para)向服務器發(fā)出請求。是以POST向服務器發(fā)出request,其參數(shù)格式為:name=namevalue&so=on。(參考注意點一)

          ?

          轉(zhuǎn)貼注明出處www.jsfchina.org
          posted on 2006-04-07 11:33 Nelson Lee 閱讀(396) 評論(5)  編輯  收藏

          FeedBack:
          # re: 一個簡單的ajax實例(轉(zhuǎn))
          2006-04-08 12:18 | lin5061
          又是AJAX,太爽了!可能過一陣子我也得看這玩意兒了。雖然還不知道什么是AJAX,但是聽說163和GMAIL的郵箱就是用這種技術(shù)在做的,看來應該會很看好。還記得以前我們談過不刷新頁面得到數(shù)據(jù)沒?我想可能會跟這方面有點關(guān)系吧。
          (呵呵,這篇文章不錯,我也來個收藏吧)  回復  更多評論
            
          # re: 一個簡單的ajax實例(轉(zhuǎn))
          2006-04-08 12:19 | lin5061
          哇,不會吧?難道你這個BLOG也是用的AJAX技術(shù)?怎么頁面沒有刷新啊?太強悍了!再提交一次  回復  更多評論
            
          # re: 一個簡單的ajax實例(轉(zhuǎn))
          2006-04-08 12:20 | lin5061
          不行,還是有刷新頁面的,呵呵  回復  更多評論
            
          # re: 一個簡單的ajax實例(轉(zhuǎn))
          2006-04-10 11:40 | Nelson
          一個AJAX小試牛刀的地方,看得我嚇一大跳
          http://cluster1.gbaopan.com/gbaopan.web/Register.aspx
          不用AJAX也不行啊  回復  更多評論
            
          # re: 一個簡單的ajax實例(轉(zhuǎn))
          2006-04-17 16:23 | lin5061
          "一個AJAX小試牛刀的地方,看得我嚇一大跳
          http://cluster1.gbaopan.com/gbaopan.web/Register.aspx
          不用AJAX也不行啊"
          這是什么??  回復  更多評論
            

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導航:
           
          <2006年4月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          常用鏈接

          留言簿(1)

          隨筆檔案

          好友的BLOG

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 东台市| 澄城县| 淮南市| 赤城县| 德江县| 乃东县| 永安市| 剑河县| 称多县| 宜兴市| 宁化县| 金坛市| 靖安县| 德州市| 南川市| 北京市| 同江市| 长沙县| 荆门市| 延长县| 佛冈县| 武隆县| 虞城县| 宣化县| 雷波县| 德格县| 和平县| 兴文县| 连江县| 洛南县| 广安市| 嘉善县| 万州区| 赣榆县| 内江市| 平山县| 开封市| 华亭县| 大名县| 山东省| 通海县|