婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 如何使用ajax開發web應用程序第1/2頁

如何使用ajax開發web應用程序第1/2頁

熱門標簽:上海浦東騰訊地圖標注位置 遼寧銀行智能外呼系統 姜堰電銷機器人 海南銀行智能外呼系統商家 澳大利亞城市地圖標注 遼寧正規電銷機器人 辰溪地圖標注 電銷機器人違法了嗎 許昌智能電銷機器人公司

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

在過去,由于為了獲得新數據而不得不重新加載web頁面(或者加載其他頁面)導致web應用程序發展被限制。雖然有其他方法可用(不加載其他頁面),但是這些技術都沒有被很好地支持而且有bug成災的趨向。在過去的幾個月里,一個過去并不被廣泛支持的技術已經被越來越多的web沖浪者(web surfers??是指瀏覽器還是瀏覽者?)所接受,它給了開發者更多的自由開發先進的web應用程序。這些通過javascript來異步取得xml數據的應用程序,被親切的稱為“Ajax應用程序”(Asynchronous Javascript and XML applications)。在這篇文章中,我將會解釋如何通過Ajax來取回一個遠程的XML文件并更新一個web page,并且隨著這個系列的繼續,我將討論更多的方法,使用ajax技術將你的web應用程序提升到一個新的層次.

這第一步就是創建一個帶一些數據的XML文件。我們將這個文件命名為data.xml。它是一個簡單的XML文件,而在一個真實的程序中,它會復雜許多,但對于我們的例子來說,簡單明了是最合適地。

?xml version="1.0" encoding="UTF-8"?> root> data> 這是一些示例數據,它被保存在一個XML文件中,并被JavaScript取回。 /data> /root>

現在讓我們創建一個簡單的web頁面包含一些示例數據。這個頁面將是我們的js腳本所在,并且這個頁面將會讓用戶們訪問柄看到Ajax腳本的運行。我們把它命名為ajax.html

!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
  "http://www.w3.org/TR/html4/strict.dtd">
html lang="zh" dir="ltr">
  head>
    meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    title>使用ajax開發web應用程序 - 示例/title>
  /head>
  body>
    h1>使用ajax開發web應用程序/h1>
    p>這個頁面演示了AJAX技術如何通過動態讀取一個遠程文件來更新一個網頁的內容--不需要任何網頁的重新加載。注意:這個例子對于禁止js的用戶來說沒有效果。/p>
    p id="xmlObj">
    這是一些示例數據,它是這個網頁的默認數據 a href="data.xml"
    title="查看這個XML數據." onclick="ajaxRead('data.xml'); this.style.display='none'; return false">查看XML數據./a>
    /p>
  /body>
/html>

注意,對于那些沒有javascript的用戶,我們直接鏈接到data.xml文件。對于那些允許運行javascript的用戶,函數“ajaxRead”將被運行,這個鏈接被隱藏,并不會被轉向到那個data.xml文件。函數“ajaxRead”現在還沒定義。所以如果你要檢驗上面的示例代碼,你會得到一個javascript錯誤。讓我們繼續并定義這個函數(還有其他的),讓你能夠看到ajax是如何工作的,下面的腳本要放到你的head標簽里:

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){
       updateObj('xmlObj', xmlObj.responseXML.getElementsByTagName('data')[0].firstChild.data);
     }
    }
    xmlObj.open ('GET', file, true);
    xmlObj.send ('');
  }
  function updateObj(obj, data){
   document.getElementById(obj).firstChild.data = data;
  }
  //-->/script>

這堆代碼有點多,讓我們一點點的進行。第一個函數叫做“ajaxRead”-也就是我們在頁面的“查看XML數據”鏈接中調用的函數,我們定義了一個“xmlObj”變量-這將作為客戶端(用戶正在查看的這個web頁面)以及服務端(web站點本身)之間的中間件。我們在一個if/else塊中定義這個對象:

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

這只是一個對不同對象是否可用的測試-某些瀏覽器實現了不同的XMLHttpRequest對象,所以當我們定義“xmlObj”作為我們的XMLHttpRequest對象時,我們不得不根據瀏覽器所實現的來定義它。如果沒有可用的XMLHttpRequest對象,我們將執行“return”語句結束這個函數以避免腳本錯誤。在大部分情況下,這個檢驗將返回一個XMLHttpRequest對象-這部分代碼應該能夠在絕大部分的瀏覽器上工作,除了少部分比較老的瀏覽器的異常情況(它能夠工作在ie5.01上,但是在netscape4上會使函數終止)。

接下來是這些代碼塊:

xmlObj.onreadystatechange = function(){
  if(xmlObj.readyState == 4){
      updateObj('xmlObj', xmlObj.responseXML.getElementsByTagName('data')[0].firstChild.data);
  }
}

每次XMLHttpRequest的狀態發生變化,事件“onreadystatechange”就會被觸發。通過使用“xmlObj.onreadystatechange = function(){...}”我們能夠創建一個函數并讓它在這個XMLHttpRequest對象的狀態每次發生改變的時候立刻運行。這里總共有五個狀態,由0走到4。

0 – 尚未初始化(在這個XMLHttpRequest開始前)

1 – 加載(XMLHttpRequest初始化一結束)

2 – 加載結束(XMLHttpRequest一從服務器上獲得一個回應)

3 – 交互(當XMLHttpRequest對象和服務器連接中)

4 – 結束(當XMLHttpRequest被告知它已經完成了所有人物并結束運行)

這第五個狀態(數字4)就是我們能夠確定數據已經可用的標志,所以我們檢驗這個xmlObj.readyState是否等于“4”來確定數據是否可用,如果是4,我們運行updateObj函數。這個函數帶兩個參數:一個當前web頁面的元素ID(當前web頁面中要更新的元素)以及用于填充這個元素的數據。這個函數的運行方式在稍后將更詳細地解釋。

我們的web頁面的p元素有一個id“xmlData”,這就是我們準備更新的段落。我們正在取得的數據來自于XML文件,但它有點復雜。這里是它如何工作的原理。

xmlObj.responseXML屬性是一個DOM對象 - 它很象“document”對象,除了它來自遠程的XML文件。換句話說,如果你在data.xml中運行腳本,那xmlObj.responseXML就是一個“document”對象。因為我們知道這些,我們能夠通過“getElementsByTagName”方法取得任何XML節點。數據包含在一個命名為“data>”的XML節點中,所以我們的任務很簡單:取得第一個(而且只有這一個)數據節點。因而,xmlObject.responseXML.getElementsByTagName("data")[0]返回XML文件中的第一個data>節點。
注意:它返回的是XML節點,而不是節點中的數據-這個數據必須通過訪問XML節點的屬性取得,這就是下一步要說的。

接下來,取得數據只需要簡單的指定“firstChild.data”(firstChild指向了那個被data>節點包含的文本節點,而這個“data”屬性則是這個文本節點的實際文本)。

xmlObj.open ('GET', file, true);
xmlObj.send ('');

這是我們的ajaxRead函數的最后一個部分。它說了些什么?嗯,xmlObj的這個“open”方法打開了一個到服務器(通過一個指定的協議,這里指定的是“GET”-你可以使用“USE”或者其他別的協議)的連接,去請求一個文件(在我們的例子里,變量“file”被作為一個參數賦給ajaxRead函數-data.xml),而且javascript可以同步(false)或者異步(true,默認值)的處理請求。由于這是異步的Javascript和XML(AJAX),我們將使用默認的異步方式-在這個例子中,使用同步方式將不起作用。

這是我們函數中的最后一行,它簡單的發送一個空字符串回服務器。如果沒有這行,xmlObj的readyState永遠不會到4,所以你的頁面永遠不會更新。這個send方法能夠用于作其他事情,但今天我只是用來從服務器上取得數據-并不發送它-所以在這篇文章中我不準備介入任何關于send方法的細節。

function updateObj(obj, data){
  document.getElementById(obj).firstChild.data = data;
}

現在再稍微解釋一下updateObj函數:這個函數使用一個新的值來更新當前頁面上任何指定的元素。他的第一個參數,“obj”是當前頁面中元素的ID-那個要被更新的對象;它的第二個參數,“data”是用來將那個將被替換值的對象(“obj”)的內容替換掉。一般來說,檢驗一下并確定當前頁面上確實有一個元素的ID是“obj”是比較明智的,但對我們的腳本的這個隔離級別來說校驗并不必要。這個函數更新的方式和我們之前從XML文件的“data”節點取得數據的方式類似-它定位它要更新的元素(這時候這個元素的ID代替了它的標簽名和在頁面中的索引)并設置這個元素的第一個子節點(文本節點)的data屬性為新的值。如果你需要使用HTML而不是純文本來更新一個元素,你也可以使用

document.getElementById(obj).innerHTML = data

這就是全部了

這個概念很簡單,而且代碼也不是很難。你能夠從某個地方讀取一個文件并且不需要重新加載這個web頁面。你有足夠的靈活性來作各種事情,包括從表單發送數據(不需要重新加載web頁面)并且使用一個服務端語言來動態生成XML文件。如果你需要更近一步,記得這個連接是很有用的-哦,還要記得Google是你朋友。在另外的文章中,我將解釋你如何配合服務端技術使用AJAX來構造強大的web應用程序。

關于作者

Jonathan Fenocchi(mail:jona#slightlyremarkable.com #換成@)是一個網絡開發者,主攻web設計,客戶端腳本,php腳本。
他的網站位于:http://www.slightlyremarkable.com

12下一頁閱讀全文
您可能感興趣的文章:
  • 使用PHPRPC實現Ajax安全登錄
  • Ajax實現漂亮、安全的登錄界面
  • Ajax技術(WEB無刷新提交數據)-
  • JQuery中ajax方法訪問web服務實例
  • AJAX請求是否真的不安全?談一談Web安全與AJAX的關系

標簽:崇左 撫州 威海 銅川 伊春 深圳 西藏 晉城

巨人網絡通訊聲明:本文標題《如何使用ajax開發web應用程序第1/2頁》,本文關鍵詞  如何,使用,ajax,開發,web,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《如何使用ajax開發web應用程序第1/2頁》相關的同類信息!
  • 本頁收集關于如何使用ajax開發web應用程序第1/2頁的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美一级理论性理论a| 国产一区二区免费看| 亚洲午夜一区二区三区| 精品黑人一区二区三区久久| 欧美国产成人精品| 亚洲女同一区二区| 欧美影视一区二区三区| 精品福利一二区| 香蕉影视欧美成人| 精品国产成人系列| 奇米色一区二区| 日本强好片久久久久久aaa| 有码一区二区三区| 丁香天五香天堂综合| 国内精品久久久久影院色 | 欧美精选一区二区| 日韩伦理av电影| 91国产视频在线观看| gogogo免费视频观看亚洲一| 国产乱码精品一区二区三| 国产欧美日韩视频在线观看| 欧美一二三四在线| 蜜臀av性久久久久av蜜臀妖精| 欧美日韩中字一区| 一区二区不卡在线播放 | 日韩精品免费专区| 欧美精品在线视频| 亚洲私人影院在线观看| 美女免费视频一区| 精品卡一卡二卡三卡四在线| 成人a区在线观看| 亚洲一二三四区不卡| 国产1区2区3区精品美女| 欧美激情在线看| www.亚洲色图.com| 26uuu亚洲婷婷狠狠天堂| 欧美欧美欧美欧美首页| 国产精品久久久久影院亚瑟 | 精品成人私密视频| 日本韩国一区二区| 精品久久久久久久久久久久包黑料| 久久亚洲免费视频| 亚洲高清视频的网址| 久久夜色精品国产欧美乱极品| 五月婷婷综合激情| 欧美亚洲国产怡红院影院| 蜜臀av一区二区在线免费观看 | 有坂深雪av一区二区精品| 亚洲成精国产精品女| 国产精品中文字幕欧美| 26uuu国产一区二区三区| 美女视频黄久久| 久久精品国产精品亚洲综合| 精品一区二区三区香蕉蜜桃| 91精品国产91久久久久久一区二区| 青青草97国产精品免费观看| 亚洲成人精品影院| 亚洲国产乱码最新视频| 丝袜亚洲另类欧美| 日韩国产在线一| 中文字幕一区二区视频| 久久99精品国产.久久久久久 | 欧美国产1区2区| 婷婷久久综合九色综合伊人色| 91福利区一区二区三区| 亚洲精品一区二区在线观看| gogo大胆日本视频一区| 日本美女一区二区| 国产91精品一区二区麻豆网站 | 久久国产三级精品| 国产日韩欧美在线一区| 国产喷白浆一区二区三区| 裸体在线国模精品偷拍| 91麻豆精品国产91久久久久久久久| 欧美在线三级电影| 欧美在线观看一区| 亚洲天堂a在线| 亚洲免费观看视频| 成人国产在线观看| 美腿丝袜亚洲综合| 国产精品视频一二| 久久精品国产精品亚洲综合| 91浏览器在线视频| 在线综合亚洲欧美在线视频| 激情图片小说一区| 亚洲欧美在线另类| a4yy欧美一区二区三区| 欧美亚洲自拍偷拍| 久久av中文字幕片| 亚洲国产精品自拍| 亚洲精品少妇30p| 亚洲综合精品久久| 美国av一区二区| 欧美丝袜丝交足nylons图片| 美腿丝袜亚洲色图| 亚洲欧美电影一区二区| 婷婷一区二区三区| 国产精品卡一卡二| 国产一区二区三区| 麻豆久久一区二区| 久久久不卡影院| 亚洲丝袜另类动漫二区| 91精品在线一区二区| 一区二区视频免费在线观看| 一本高清dvd不卡在线观看 | 欧美日韩一级片在线观看| 欧洲视频一区二区| 国产精品久久三区| 久久久蜜臀国产一区二区| 久久综合九色综合97婷婷女人 | 久久99精品久久久久久| 99精品久久久久久| 欧美午夜精品一区二区三区| 欧美日韩一级二级| 国产成人免费9x9x人网站视频| 国产精品一区专区| 成熟亚洲日本毛茸茸凸凹| 欧美一区二区免费视频| 亚洲国产精品天堂| 一本大道av伊人久久综合| 日本一区二区三区高清不卡| 成人午夜又粗又硬又大| 精品国产成人在线影院| 中文字幕一区在线观看| 国产女人18毛片水真多成人如厕| 国产精品美女久久久久久久久| 国产精品福利一区| 一区二区三区四区乱视频| 色婷婷久久久久swag精品 | 亚洲日本免费电影| 欧美中文字幕一区二区三区| 国产色一区二区| 一道本成人在线| 亚洲精品国产品国语在线app| 国产精品一区在线观看乱码| 2023国产精品视频| 久久精品夜色噜噜亚洲aⅴ| 亚洲欧美综合色| 欧美成va人片在线观看| 久久99国产精品久久99果冻传媒| 91在线丨porny丨国产| 国产清纯美女被跳蛋高潮一区二区久久w| 国产精品乱人伦| 国产精品伦一区二区三级视频| 久久亚区不卡日本| 国产剧情av麻豆香蕉精品| 国产精品无遮挡| 色偷偷一区二区三区| 欧美久久久久免费| 精品99一区二区| 欧美精品一区二区三区在线播放| 亚洲精品一二三| 久久99精品久久久久久久久久久久| 国产精品青草综合久久久久99| 制服丝袜av成人在线看| 天天影视网天天综合色在线播放 | 国产日韩在线不卡| 91麻豆.com| 日韩av一级片| 精品国产一区二区三区四区四| 国产又黄又大久久| 久久99最新地址| 色综合久久中文综合久久牛| 欧美日韩中文字幕一区| 亚洲欧洲国产专区| 精品亚洲国产成人av制服丝袜| 91丝袜国产在线播放| 国产一区二区三区黄视频 | 国产亚洲精品超碰| 黄页视频在线91| 老鸭窝一区二区久久精品| 国产亚洲精品资源在线26u| 成人深夜在线观看| 欧美自拍丝袜亚洲| 日本欧美韩国一区三区| 中文字幕在线一区免费| 91国在线观看| 午夜视频在线观看一区二区| 亚洲一级片在线观看| 成人午夜在线视频| 乱中年女人伦av一区二区| 国产精品一区2区| 久久电影网站中文字幕| 欧美亚洲一区二区在线| 国产午夜精品久久久久久免费视| 国产成人精品免费视频网站| 91精品国产91综合久久蜜臀| 91高清视频在线| 色婷婷一区二区三区四区| 久久av资源站| 一区二区在线看| 久久亚区不卡日本| 色天天综合久久久久综合片| 成人午夜激情片| 亚洲一区二区三区精品在线| 欧美亚洲愉拍一区二区| 精品一区二区三区免费观看| 国产网站一区二区| 91亚洲精品乱码久久久久久蜜桃| 波多野结衣中文字幕一区二区三区|