emu in blogjava

            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            171 隨筆 :: 103 文章 :: 1052 評(píng)論 :: 2 Trackbacks

          我把這篇文章稱為Ajax裸奔,因?yàn)槲掖蛩悴挥萌魏维F(xiàn)成的框架和除了文本編輯器之外的工具來開發(fā)這里面的例子。一切從原碼開始,從鍵盤開始。
          在這篇文章里,我要一起一步一步的做一個(gè)堪稱最簡單的Ajax的示范應(yīng)用。
          完全理解本文,你需要:
          1 了解xml的基本概念:
          * 一對(duì)尖括號(hào)定義了一個(gè)xml標(biāo)記
          * 一個(gè)合法xml標(biāo)記或者是開始標(biāo)記,或者是結(jié)束標(biāo)記,或者是獨(dú)立標(biāo)記。
          * 標(biāo)記有標(biāo)記名、標(biāo)記體和屬性三個(gè)基礎(chǔ)組成部分
          * 標(biāo)記可以嵌套。
          * 一個(gè)xml文件只有一個(gè)頂層標(biāo)記。
          * 一個(gè)成功解析后的xml文件對(duì)應(yīng)一個(gè)文檔對(duì)象模型(DOM)
          * xml中的標(biāo)記和Dom中的節(jié)點(diǎn)有嚴(yán)格的對(duì)應(yīng)關(guān)系:
             * 一個(gè)xml標(biāo)記在DOM中對(duì)應(yīng)一個(gè)節(jié)點(diǎn)(node),
             * 子標(biāo)記對(duì)應(yīng)dom的子節(jié)點(diǎn)
             * 父標(biāo)記對(duì)應(yīng)dom的父節(jié)點(diǎn)
             * 標(biāo)記屬性對(duì)應(yīng)節(jié)點(diǎn)屬性
          * 我們通常通過文檔對(duì)象模型來訪問xml的內(nèi)容,而不是自己解析xml字符串。
          * xhtml是xml的一個(gè)子集。

          2 對(duì)javascript和html有一些基本的了解。至少要可以對(duì)照手冊看明白我們要用到的腳本。

          第一步,問題定義。
          我們在將要實(shí)現(xiàn)的應(yīng)用是:用Ajax技術(shù)讀取一個(gè)新聞標(biāo)題的列表,并展現(xiàn)在頁面上。

          第二步,原型頁面設(shè)計(jì)
          step2.html:

           

          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
          <html>
          <head>
           
          <meta http-equiv="Content-Type" content="text/html; charset=gb18030" />
           
          <meta name="Author" content="emu" />
           
          <meta name="Keywords" content="ajax" />
           
          <meta name="Description" content="Ajax裸奔-原型頁面" />
           
          <title> 原型頁面 </title>
          </head>
          <body>
           工行小額賬戶明年收費(fèi) 不足300元要?dú)w并
          <br />
           "神六"飛行開銷僅為美航天飛機(jī)4.5% 花9億
          <br />
           2005能源富豪榜揭榜 超市要撤致癌保鮮膜
          <br />
           神六催生高價(jià)股 mbo公司股改 高管一夜暴富
          <br />
           保險(xiǎn)公司告基金利益輸送 科龍管理班子亮相 
          <br />
           神六飛船成功著陸 載人飛行取得圓滿成功
          <br />
           索尼中國不裁員 夏普與南京熊貓分道揚(yáng)鑣 
          <br />
           北電任命新總裁兼ceo 索愛發(fā)布第三季財(cái)報(bào)
          <br />
           300萬像素手機(jī)推薦 最有降價(jià)潛力手機(jī)導(dǎo)購
          <br />
           近期五大dc跳水王 怪模怪樣個(gè)性手機(jī)推薦
          <br />
           亞歷山大古城的文化歷史 勝利者改寫歷史 
          <br />
          </body>
          </html>

           

          做好頁面,不要忘了帖上http://validator.w3.org驗(yàn)證一下是否完全符合規(guī)范。如果通過了,你就可以非常驕傲的在自己的頁面上帖上這一行:
          <p><a href=" src="當(dāng)然,前提是你的頁面有公網(wǎng)地址。

          第三步,分析頁面,分解出需要用Ajax技術(shù)獲取的信息。
          從問題定義中我們已經(jīng)了解到,新聞標(biāo)題的列表是需要獨(dú)立獲取并顯示在頁面上的內(nèi)容。
          因此我們定義如下的xml:
          news.xml:

           

          <?xml version="1.0" encoding="gb2312"?>
          <data>
           焦點(diǎn)|工行小額賬戶明年收費(fèi) 不足300元要?dú)w并
          &lt;br /&gt;
           財(cái)經(jīng)|"神六"飛行開銷僅為美航天飛機(jī)4.5% 花9億
          &lt;br /&gt;
           財(cái)經(jīng)|2005能源富豪榜揭榜 超市要撤致癌保鮮膜
          &lt;br /&gt;
           證券|神六催生高價(jià)股 MBO公司股改 高管一夜暴富
          &lt;br /&gt;
           證券|保險(xiǎn)公司告基金利益輸送 科龍管理班子亮相 
          &lt;br /&gt;
           科技|神六飛船成功著陸 載人飛行取得圓滿成功
          &lt;br /&gt;
           關(guān)注|索尼中國不裁員 夏普與南京熊貓分道揚(yáng)鑣 
          &lt;br /&gt;
           熱點(diǎn)|北電任命新總裁兼CEO 索愛發(fā)布第三季財(cái)報(bào)
          &lt;br /&gt;
           數(shù)碼|300萬像素手機(jī)推薦 最有降價(jià)潛力手機(jī)導(dǎo)購
          &lt;br /&gt;
           測評(píng)|近期五大DC跳水王 怪模怪樣個(gè)性手機(jī)推薦
          &lt;br /&gt;
           探索|亞歷山大古城的文化歷史 勝利者改寫歷史 
          &lt;br /&gt;
          </data>

          第四步,我們修改原型頁面,讓它可以接受xml數(shù)據(jù)并把它顯示出來。
          因?yàn)橹皇且粋€(gè)中間步驟,我們會(huì)暫時(shí)破壞一下xhtml規(guī)范。下面這個(gè)頁面將只能在IE上面顯示:
          step4.html

          <html>
          <head>
           
          <meta http-equiv="Content-Type" content="text/html; charset=gb18030" />
           
          <meta name="Author" content="emu" />
           
          <meta name="Keywords" content="ajax" />
           
          <meta name="Description" content="Ajax裸奔-步驟4" />
           
          <title> 原型頁面 </title>
           
          <xml id="newsXML">
            
          <data>
             焦點(diǎn)|工行小額賬戶明年收費(fèi) 不足300元要?dú)w并
          &lt;br /&gt;
             財(cái)經(jīng)|"神六"飛行開銷僅為美航天飛機(jī)4.5% 花9億
          &lt;br /&gt;
             財(cái)經(jīng)|2005能源富豪榜揭榜 超市要撤致癌保鮮膜
          &lt;br /&gt;
             證券|神六催生高價(jià)股 MBO公司股改 高管一夜暴富
          &lt;br /&gt;
             證券|保險(xiǎn)公司告基金利益輸送 科龍管理班子亮相 
          &lt;br /&gt;
             科技|神六飛船成功著陸 載人飛行取得圓滿成功
          &lt;br /&gt;
             關(guān)注|索尼中國不裁員 夏普與南京熊貓分道揚(yáng)鑣 
          &lt;br /&gt;
             熱點(diǎn)|北電任命新總裁兼CEO 索愛發(fā)布第三季財(cái)報(bào)
          &lt;br /&gt;
             數(shù)碼|300萬像素手機(jī)推薦 最有降價(jià)潛力手機(jī)導(dǎo)購
          &lt;br /&gt;
             測評(píng)|近期五大DC跳水王 怪模怪樣個(gè)性手機(jī)推薦
          &lt;br /&gt;
             探索|亞歷山大古城的文化歷史 勝利者改寫歷史 
          &lt;br /&gt;
            
          </data>
           
          </xml>
           
          <SCRIPT>
           
          <!--
           
          function init(){
            document.body.innerHTML
          =newsXML.getElementsByTagName("data")[0].text;
           }
           
          //-->
           </SCRIPT>
          </head>
          <body onload="init()">
          </body>
          </html>

           

          第五步,我們繼續(xù)修改頁面,把xml從文件中獨(dú)立出來,并讓頁面可以訪問獨(dú)立的xml文件并把它顯示出來。
          首先,確認(rèn)第三步定義的xml已經(jīng)保存為一個(gè)xml文件 news.xml
          然后頁面就可以改成這樣了:

          step5.html:

          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
          <html>
          <head>
              
          <meta http-equiv="Content-Type" content="text/html; charset=gb18030" />
              
          <meta name="Author" content="emu" />
              
          <meta name="Keywords" content="ajax" />
              
          <meta name="Description" content="Ajax裸奔-步驟5" />
              
          <title> 原型頁面 </title>
              
          <script type="text/JavaScript">
              
          <!--
              
          var newsXML;
              
          function init(){
                  newsXML 
          = new ActiveXObject("microsoft.XMLDOM"); //創(chuàng)建XMLDOM對(duì)象,用以通過文件系統(tǒng)或者h(yuǎn)ttp連接訪問xml文件
                  newsXML.async= true//規(guī)定XMLDOM對(duì)象采用異步方式加載數(shù)據(jù)
                  newsXML.onreadystatechange= handleXML; //指定加載到xml之后采用那個(gè)函數(shù)來處理xml數(shù)據(jù)
                  newsXML.load("news.xml"); //開始裝載xml數(shù)據(jù)
              }
              
          function handleXML(){
                  
          if(newsXML.readyState==4)
                      document.body.innerHTML
          =newsXML.getElementsByTagName("data")[0].text;
              }

              
          //-->
              </script>
          </head>
          <body onload="init()">
          </body>
          </html>

           

          確認(rèn)news.xml和step5.html保存在同一個(gè)目錄下,現(xiàn)在在IE中你已經(jīng)可以看到你的第一個(gè)Ajax頁面在工作了。

          不過現(xiàn)在我們還沒有通過http來訪問xml,也還不能在非IE瀏覽器上運(yùn)行這個(gè)應(yīng)用,我們將在下篇文章中解決這兩個(gè)問題。

          本文全部原碼下載

          posted on 2006-01-26 12:26 emu 閱讀(2459) 評(píng)論(4)  編輯  收藏

          評(píng)論

          # re: Ajax 裸奔之一 2006-01-26 15:01 pesome
          呵呵,淺顯易懂  回復(fù)  更多評(píng)論
            

          # re: Ajax 裸奔之一 2006-01-26 17:09 emu
          淺顯易懂是我寫這寫文章的一個(gè)關(guān)鍵目標(biāo)。  回復(fù)  更多評(píng)論
            

          # re: Ajax 裸奔之一 2006-05-30 12:49 老鼠
          高人:):)

          呵呵,emu,我把您這一個(gè)系列的文章都轉(zhuǎn)走了,轉(zhuǎn)至www.itpub.net,您同意不?

          如果您有疑問,請(qǐng)?jiān)诖肆粞曰蚪o我E-MAIL,謝謝。

          cammy.sun@hotmail.com  回復(fù)  更多評(píng)論
            

          # re: Ajax 裸奔之一 2006-05-30 13:26 emu
          歡迎轉(zhuǎn)載,請(qǐng)注明出處就可以了。  回復(fù)  更多評(píng)論
            


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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 静乐县| 大港区| 灵山县| 天水市| 易门县| 刚察县| 六安市| 德州市| 安丘市| 洛川县| 景泰县| 增城市| 平阴县| 鹿邑县| 嘉黎县| 加查县| 闵行区| 东丽区| 于田县| 清水县| 安陆市| 黄浦区| 潮安县| 察雅县| 三河市| 绥中县| 镇巴县| 泗阳县| 将乐县| 翁源县| 乐山市| 乌拉特后旗| 正定县| 周口市| 平顶山市| 靖安县| 婺源县| 怀宁县| 明光市| 日喀则市| 阿图什市|