中文字幕二区_国产精品免费在线观看_黄色网站观看_人人草人人澡_日本真实娇小xxxx

您的位置: 首頁(yè) > 技術(shù)文檔 > 網(wǎng)絡(luò)編程 > 如何使用ajax開發(fā)web應(yīng)用程序
用MVC模型引導(dǎo)你的WEB設(shè)計(jì)思路 回到列表 asp編譯成dll-圖形化教程
 如何使用ajax開發(fā)web應(yīng)用程序

作者:Sheneyan 時(shí)間: 2006-02-07 文檔類型:翻譯 來(lái)自:藍(lán)色理想

第 1 頁(yè) 如何使用ajax開發(fā)web應(yīng)用程序 [1]
第 2 頁(yè) 如何使用ajax開發(fā)web應(yīng)用程序 [2]
第 3 頁(yè) 如何使用ajax開發(fā)web應(yīng)用程序 [3]
第 4 頁(yè) 如何使用ajax開發(fā)web應(yīng)用程序 [4]

作者: Jonathan Fenocchi
時(shí)間:2005.10.25
譯者:Sheneyan
英文原文:
http://webreference.com/programming/javascript/jf/column12/index.html

在這個(gè)關(guān)于AJAX系列的第三部分中,我們將學(xué)習(xí)如何使用AJAX與服務(wù)端進(jìn)行寫作以及這些技術(shù)如何產(chǎn)生強(qiáng)大的web應(yīng)用程序。如果你對(duì)學(xué)習(xí)如何構(gòu)建類似GMail或者Google Maps的web程序感興趣的話,這是一篇基礎(chǔ)的入門(雖然那兩個(gè)東東會(huì)比我們?cè)谶@篇文章中提及的內(nèi)容復(fù)雜的多)。在這篇文章中,我使用PHP作為服務(wù)端語(yǔ)言,但AJAX能夠和任何服務(wù)端語(yǔ)言進(jìn)行很好的兼容,所以你盡可以選擇你所鐘愛的任何語(yǔ)言!

我們還是從我們上一篇文章的代碼(喏,就在上面)開始我們的學(xué)習(xí),你可以去閱讀它來(lái)作為參考。

這里就是這個(gè)HTML頁(yè)面(帶js):

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
 "http://www.w3.org/TR/html4/strict.dtd">
<html lang="zh-cn" dir="ltr">
 <head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  <title>如何使用ajax開發(fā)web應(yīng)用程序--示例</title>
  <script type="text/javascript"><!--
  function ajaxRead(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){
       processXML(xmlObj.responseXML);
    }
   }
   xmlObj.open ('GET', file, true);
   xmlObj.send ('');
  }
  function processXML(obj){
   var dataArray = obj.getElementsByTagName('pets')[0].childNodes;
   var dataArrayLen = dataArray.length;
   var insertData = '<table><tr><th>'
    + 'Pets</th><th>Tasks</th></tr>';
   for (var i=0; i<dataArrayLen; i++){
     if(dataArray[i].tagName){
        insertData += '<tr><td>' + dataArray[i].tagName + '</td>'
                   +  '<td>' + dataArray[i].getAttribute('tasks') + '</td></tr>';
     }
   }
   insertData += '</table>';
   document.getElementById ('dataArea').innerHTML = insertData;
  }
  //--></script>
  <style type="text/css"><!--
  table, tr, th, td {
   border: solid 1px #000;
   border-collapse: collapse;
   padding: 5px;
  }
  --></style>
 </head>
 <body>
  <h1>使用Ajax開發(fā)web應(yīng)用程序</h1>
  <p>這個(gè)頁(yè)面演示了AJAX技術(shù)如何通過(guò)動(dòng)態(tài)讀取一個(gè)遠(yuǎn)程文件來(lái)更新一個(gè)網(wǎng)頁(yè)的內(nèi)容--不需要任何網(wǎng)頁(yè)的重新加載。注意:這個(gè)例子對(duì)于禁止js的用戶來(lái)說(shuō)沒(méi)有效果。</p>
  <p>這個(gè)頁(yè)面將演示如從取回并處理成組的XML數(shù)據(jù)。被取回的數(shù)據(jù)將會(huì)以表格形式輸出到底下。
  <a href="#" onclick="ajaxRead('data_3.php'); return false">查看演示</a>.</p>
  <div id="dataArea"></div>
 </body>
</html>

(sheneyan注:示例見 example_3.html )
  注意:這里唯一的變化就是我們將我們的ajaxRead()中的“data_2.xml”改成了“data_3.php”。這是因?yàn)槲覀儗⑹褂胮hp來(lái)輸出XML(如果你在你的瀏覽器里打開這個(gè)PHP文件,它會(huì)以一個(gè)XML文件的形式展現(xiàn)出來(lái)--我們只是要在這個(gè)文件中進(jìn)行操作而不只是一個(gè)簡(jiǎn)單的XML)。這個(gè)PHP文件的輸出類似:

<?xml version="1.0" encoding="UTF-8"?>
<data>
  <pets>
    <貓 tasks="喂食, 飲水, 抓跳蚤" />
    <狗 tasks="喂食, 飲水, 帶出去遛遛" />
    <魚 tasks="喂食, 檢查氧氣,水的純度,其它" />
  </pets>
</data> 

(Sheneyan注:示例就不提供了,參考底下說(shuō)明即可。)

這只是輸出結(jié)果,我們準(zhǔn)備從一個(gè)mysql數(shù)據(jù)庫(kù)中獲取這些信息。從現(xiàn)在起,我們可以直接在我們的數(shù)據(jù)庫(kù)中修改數(shù)據(jù)而不是手動(dòng)修改XML文件。用AJAX通過(guò)PHP來(lái)取得數(shù)據(jù),并將它獲取到一個(gè)頁(yè)面上--所有這些,仍然不需要重新加載網(wǎng)頁(yè)。

第一步是連接到mysql去獲取數(shù)據(jù)。這篇文章的重點(diǎn)在javascript,所以我不會(huì)解釋下面的代碼如何工作,你需要自己去了解如何連接mysql數(shù)據(jù)庫(kù)。

<?php
 $user = "admin";
 $pass = "adminpass";
 $host = "localhost";
 $conn = mysql_connect($host, $user, $pass) or die("Unable to connect to MySQL.");
 $db   = mysql_select_db("pets",$conn) or die("Could not select the database.");
 mysql_close($db);
?>

只要你連接了數(shù)據(jù)庫(kù),你可以通過(guò)底下的查詢來(lái)獲取信息:

<?php
 $user = "admin";
 $pass = "adminpass";
 $host = "localhost";
 $conn = mysql_connect($host, $user, $pass) or die("Unable to connect to MySQL.");
 $db   = mysql_select_db("pets",$conn) or die("Could not select the database.");
 $result = mysql_query("SELECT * FROM `pets`");
  if(mysql_num_rows ($result) == 0){
     die ('Error: no data found in the database.');
  }
  while ($row = mysql_fetch_assoc($result)){
     echo 'Pet: '.$row['pet'].', tasks: '.$row['tasks'].'. ';
  }
 
 mysql_close($db);
?>

這段代碼給了你需要的信息,但它輸出并不正確。我們需要修改這PHP代碼來(lái)分隔數(shù)據(jù)為XML,而不是純文本。為了實(shí)現(xiàn)這個(gè)目標(biāo)我們得作幾個(gè)修改。

<?php
 header('Content-Type: text/xml');//編號(hào)1
 echo '<?xml version="1.0" encoding="UTF-8"?>';//編號(hào)2
 echo "\n<data>\n<pets>\n";//編號(hào)3
 $user = "admin";
 $pass = "adminpass";
 $host = "localhost";
 $conn = mysql_connect($host, $user, $pass) or die("無(wú)法連接mysql.");
 $db   = mysql_select_db("pets",$conn) or die("無(wú)法選擇數(shù)據(jù)庫(kù).");
 $result = mysql_query("SELECT * FROM `pets`");
  if(mysql_num_rows ($result) == 0){
     die ('Error: 數(shù)據(jù)庫(kù)沒(méi)有數(shù)據(jù).');
  }
  while ($row = mysql_fetch_assoc($result)){
     echo '<'.$row['pet'].' tasks="'.$row['tasks'].'" />'."\n";//編號(hào)4
  }
  echo "</pets>\n</data>";//編號(hào)5
 mysql_close($db);
?>

讓我們從上面開始,一次一行的來(lái)分析它是如何輸出XML的.我給每一行都加了注釋標(biāo)記以便于更好的對(duì)應(yīng)理解(原文是I've color-coded each line to make it easier to understand,我懶得上色,就改成用編號(hào)了)

編號(hào)1:這部分代碼發(fā)送一個(gè)http頭來(lái)讓用戶客戶端明白這個(gè)php文件輸出的是一個(gè)XML。這就是為什么你在你的瀏覽器里看這個(gè)文檔的時(shí)候它以一個(gè)XML文件的形式展現(xiàn),即使你的文件有一個(gè)“.php”后綴。

編號(hào)2:這部分的代碼輸出了XML聲明。這是我之前展示給你看的XML的第一行。

編號(hào)3:這部分的代碼輸出的最開始的兩個(gè)標(biāo)簽:我們的根標(biāo)簽,<data>和我們用來(lái)放置所有寵物的<pets>標(biāo)簽。

編號(hào)4:這部分的代碼最困難的。這里包含了一個(gè)循環(huán)用來(lái)遍歷你數(shù)據(jù)庫(kù)里所有的數(shù)據(jù)。每次循環(huán),它會(huì)輸出一個(gè)新的節(jié)點(diǎn),這個(gè)節(jié)點(diǎn)用每一種動(dòng)物作為標(biāo)簽名以及一個(gè)"任務(wù)"屬性。例如,如果你數(shù)據(jù)庫(kù)中的第一只寵物是“貓”而且它相應(yīng)的任務(wù)字段是“喂食, 飲水, 抓跳蚤”,那php將輸出在XML文檔中輸出 <貓 tasks="喂食, 飲水, 抓跳蚤" /> 。這個(gè)“\n” 部分只是在結(jié)尾插入一個(gè)新行,保證這個(gè)XML代碼不至于都在同一行。

編號(hào)5:這部分的代碼結(jié)束了 我們開始時(shí)打開的</pets> 和 </data> 節(jié)點(diǎn)。因?yàn)閄ML必須是格式良好的(well-formed),所以我們必須認(rèn)真對(duì)待這部分以確認(rèn)我們的程序能夠正確運(yùn)行。

現(xiàn)在我們已經(jīng)讓PHP輸出XML了,我們現(xiàn)在所要作的就是登錄我們的mysql數(shù)據(jù)庫(kù),并進(jìn)行我們所需要的修改,來(lái)更新這個(gè)XML。很酷,不是嗎?我們?nèi)匀荒軌蚴褂蒙弦黄恼轮械膉s腳本來(lái)獲取代碼,因?yàn)閄ML輸出和之前的完全一樣。

結(jié)論

你可以再進(jìn)一步的擴(kuò)展,使用XML來(lái)保存和獲取數(shù)據(jù)。換句話說(shuō),你能夠使用php來(lái)寫你的XML文件,然后讓javascript來(lái)讀。用ajax,你也能夠定時(shí)的檢查xml文件是否已經(jīng)更改而且,如果XML已經(jīng)更新,也可以更新本頁(yè)面。

關(guān)于作者

Jonathan Fenocchi(mail:jona#slightlyremarkable.com #換成@)是一個(gè)網(wǎng)絡(luò)開發(fā)者,主攻web設(shè)計(jì),客戶端腳本,php腳本。
他的網(wǎng)站位于:http://www.slightlyremarkable.com

出處:藍(lán)色理想
責(zé)任編輯:moby

上一頁(yè) 如何使用ajax開發(fā)web應(yīng)用程序 [2] 下一頁(yè) 如何使用ajax開發(fā)web應(yīng)用程序 [4]

◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論

相關(guān)文章 更多相關(guān)鏈接
淺談flash web的結(jié)構(gòu)
設(shè)計(jì)五原則
Web 表單設(shè)計(jì)原則和實(shí)踐
關(guān)于中英文正文字體比較
網(wǎng)站程序員如何應(yīng)對(duì)web標(biāo)準(zhǔn)
作者文章 更多作者文章
客戶端模版的應(yīng)用
[js效果] 圖片加載進(jìn)度實(shí)時(shí)顯示
javascript的函數(shù)
ajax的缺點(diǎn)
用Google Sitemaps幫助你SEO
關(guān)鍵字搜索 常規(guī)搜索 推薦文檔
熱門搜索:CSS Fireworks 設(shè)計(jì)比賽 網(wǎng)頁(yè)制作 web標(biāo)準(zhǔn) 用戶體驗(yàn) UE photoshop Dreamweaver Studio8 Flash 手繪 CG
站點(diǎn)最新 站點(diǎn)最新列表
周大!熬•自然”設(shè)計(jì)大賽開啟
國(guó)際體驗(yàn)設(shè)計(jì)大會(huì)7月將在京舉行
中國(guó)國(guó)防科技信息中心標(biāo)志征集
云計(jì)算如何讓安全問(wèn)題可控
云計(jì)算是多數(shù)企業(yè)唯一擁抱互聯(lián)網(wǎng)的機(jī)會(huì)
阿里行云
云手機(jī)年終巨獻(xiàn),送禮標(biāo)配299起
阿里巴巴CTO王堅(jiān)的"云和互聯(lián)網(wǎng)觀"
1499元買真八核 云OS雙蛋大促
首屆COCO桌面手機(jī)主題設(shè)計(jì)大賽
欄目最新 欄目最新列表
淺談JavaScript編程語(yǔ)言的編碼規(guī)范
如何在illustrator中繪制臺(tái)歷
Ps簡(jiǎn)單繪制一個(gè)可愛的鉛筆圖標(biāo)
數(shù)據(jù)同步算法研究
用ps作簡(jiǎn)單的作品展示頁(yè)面
CSS定位機(jī)制之一:普通流
25個(gè)最佳最閃亮的Eclipse開發(fā)項(xiàng)目
Illustrator中制作針線縫制文字效果
Photoshop制作印刷凹凸字體
VS2010中創(chuàng)建自定義SQL Rule
>> 分頁(yè) 首頁(yè) 前頁(yè) 后頁(yè) 尾頁(yè) 頁(yè)次:3/4頁(yè) 1個(gè)記錄/頁(yè) 轉(zhuǎn)到 頁(yè) 共4個(gè)記錄

藍(lán)色理想版權(quán)申明:除部分特別聲明不要轉(zhuǎn)載,或者授權(quán)我站獨(dú)家播發(fā)的文章外,大家可以自由轉(zhuǎn)載我站點(diǎn)的原創(chuàng)文章,但原作者和來(lái)自我站的鏈接必須保留(非我站原創(chuàng)的,按照原來(lái)自一節(jié),自行鏈接)。文章版權(quán)歸我站和作者共有。

轉(zhuǎn)載要求:轉(zhuǎn)載之圖片、文件,鏈接請(qǐng)不要盜鏈到本站,且不準(zhǔn)打上各自站點(diǎn)的水印,亦不能抹去我站點(diǎn)水印。

特別注意:本站所提供的攝影照片,插畫,設(shè)計(jì)作品,如需使用,請(qǐng)與原作者聯(lián)系,版權(quán)歸原作者所有,文章若有侵犯作者版權(quán),請(qǐng)與我們聯(lián)系,我們將立即刪除修改。

您的評(píng)論
用戶名:  口令:
說(shuō)明:輸入正確的用戶名和密碼才能參與評(píng)論。如果您不是本站會(huì)員,你可以注冊(cè) 為本站會(huì)員。
注意:文章中的鏈接、內(nèi)容等需要修改的錯(cuò)誤,請(qǐng)用報(bào)告錯(cuò)誤,以利文檔及時(shí)修改。
不評(píng)分 1 2 3 4 5
注意:請(qǐng)不要在評(píng)論中含與內(nèi)容無(wú)關(guān)的廣告鏈接,違者封ID
請(qǐng)您注意:
·不良評(píng)論請(qǐng)用報(bào)告管理員,以利管理員及時(shí)刪除。
·尊重網(wǎng)上道德,遵守中華人民共和國(guó)的各項(xiàng)有關(guān)法律法規(guī)
·承擔(dān)一切因您的行為而直接或間接導(dǎo)致的民事或刑事法律責(zé)任
·本站評(píng)論管理人員有權(quán)保留或刪除其管轄評(píng)論中的任意內(nèi)容
·您在本站發(fā)表的作品,本站有權(quán)在網(wǎng)站內(nèi)轉(zhuǎn)載或引用
·參與本評(píng)論即表明您已經(jīng)閱讀并接受上述條款
推薦文檔 | 打印文檔 | 評(píng)論文檔 | 報(bào)告錯(cuò)誤  
專業(yè)書推薦 更多內(nèi)容
網(wǎng)站可用性測(cè)試及優(yōu)化指南
《寫給大家看的色彩書1》
《跟我去香港》
眾妙之門—網(wǎng)站UI 設(shè)計(jì)之道
《Flex 4.0 RIA開發(fā)寶典》
《贏在設(shè)計(jì)》
犀利開發(fā)—jQuery內(nèi)核詳解與實(shí)踐
作品集 更多內(nèi)容

雜⑦雜⑧ Gold NORMANA V2