慧橋教育Ajax學(xué)習(xí)-文檔資料_第1頁
慧橋教育Ajax學(xué)習(xí)-文檔資料_第2頁
慧橋教育Ajax學(xué)習(xí)-文檔資料_第3頁
慧橋教育Ajax學(xué)習(xí)-文檔資料_第4頁
慧橋教育Ajax學(xué)習(xí)-文檔資料_第5頁
已閱讀5頁,還剩77頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、Copyright 2008 - 2009 WitB2Process and Portfolio Management 2005 IBM Corporation Ajax基礎(chǔ)基礎(chǔ) 使用使用Ajax發(fā)送異步請求發(fā)送異步請求 在請求和響應(yīng)中使用在請求和響應(yīng)中使用XML 使用使用JSON進(jìn)行數(shù)據(jù)傳輸進(jìn)行數(shù)據(jù)傳輸3Process and Portfolio Management 2005 IBM CorporationAjax基礎(chǔ)基礎(chǔ)4Process and Portfolio Management 2005 IBM Corporation 先來點(diǎn)感覺,看些例子先來點(diǎn)感覺,看些例子4BACKBASE購

2、物網(wǎng)站購物網(wǎng)站4Google Suggest4Google Map4and many more5Process and Portfolio Management 2005 IBM Corporation Ajax (Asynchronous JavaScript and XML)不是一個(gè)新不是一個(gè)新的技術(shù),事實(shí)上,它是一些舊有的成熟的技術(shù)以一種全新的技術(shù),事實(shí)上,它是一些舊有的成熟的技術(shù)以一種全新的更加強(qiáng)大的方式整合在一起的更加強(qiáng)大的方式整合在一起 Ajax的關(guān)鍵技術(shù):的關(guān)鍵技術(shù):4使用使用XHTML(HTML)和和CSS構(gòu)建標(biāo)準(zhǔn)化的展示層構(gòu)建標(biāo)準(zhǔn)化的展示層4使用使用DOM進(jìn)行動(dòng)態(tài)顯示和交互進(jìn)

3、行動(dòng)態(tài)顯示和交互4使用使用XML和和XSLT進(jìn)行數(shù)據(jù)交換和操縱進(jìn)行數(shù)據(jù)交換和操縱4使用使用XMLHttpRequest異步獲取數(shù)據(jù)異步獲取數(shù)據(jù)4使用使用JavaScript將所有元素綁定在一起將所有元素綁定在一起6Process and Portfolio Management 2005 IBM Corporation7Process and Portfolio Management 2005 IBM Corporation 在傳統(tǒng)的在傳統(tǒng)的Web應(yīng)用模型下,大部分的用戶操作都會(huì)發(fā)送一應(yīng)用模型下,大部分的用戶操作都會(huì)發(fā)送一個(gè)個(gè)HTTP請求給服務(wù)器,然后服務(wù)器開始處理(接收數(shù)據(jù),請求給服務(wù)器,然

4、后服務(wù)器開始處理(接收數(shù)據(jù),執(zhí)行業(yè)務(wù)邏輯,訪問數(shù)據(jù)庫等),最后向?yàn)g覽器返回執(zhí)行業(yè)務(wù)邏輯,訪問數(shù)據(jù)庫等),最后向?yàn)g覽器返回HTML頁面。當(dāng)服務(wù)器處理請求時(shí),用戶能夠做什么呢?頁面。當(dāng)服務(wù)器處理請求時(shí),用戶能夠做什么呢?只有等待!只有等待!8Process and Portfolio Management 2005 IBM Corporation 在傳統(tǒng)的在傳統(tǒng)的Web應(yīng)用模型下應(yīng)用模型下,客戶機(jī)客戶機(jī) (瀏覽器或者本地機(jī)器上運(yùn)行的(瀏覽器或者本地機(jī)器上運(yùn)行的代碼)向服務(wù)器發(fā)出請求。該請求是同步的,客戶機(jī)等待服務(wù)器的響代碼)向服務(wù)器發(fā)出請求。該請求是同步的,客戶機(jī)等待服務(wù)器的響應(yīng)。當(dāng)客戶機(jī)等待的時(shí)

5、候,會(huì)用某種形式通知您正在處理:應(yīng)。當(dāng)客戶機(jī)等待的時(shí)候,會(huì)用某種形式通知您正在處理:4 沙漏(特別是沙漏(特別是 Windows 上)上)4 旋轉(zhuǎn)皮球(通常在旋轉(zhuǎn)皮球(通常在 Mac 機(jī)器上)機(jī)器上)4 應(yīng)用程序基本上凍結(jié)了,然后過一段時(shí)間光標(biāo)變化了應(yīng)用程序基本上凍結(jié)了,然后過一段時(shí)間光標(biāo)變化了 這正是傳統(tǒng)這正是傳統(tǒng)Web 應(yīng)用程序讓人感到笨拙或緩慢的原因應(yīng)用程序讓人感到笨拙或緩慢的原因 缺乏真正缺乏真正的交互性。按下按鈕時(shí),應(yīng)用程序?qū)嶋H上變得不能使用,直到剛剛觸的交互性。按下按鈕時(shí),應(yīng)用程序?qū)嶋H上變得不能使用,直到剛剛觸發(fā)的請求得到響應(yīng)。如果請求需要大量服務(wù)器處理,那么等待的時(shí)間發(fā)的請求得到

6、響應(yīng)。如果請求需要大量服務(wù)器處理,那么等待的時(shí)間可能很長可能很長9Process and Portfolio Management 2005 IBM Corporation Ajax應(yīng)用通過在用戶和服務(wù)器之間引入一個(gè)媒介(應(yīng)用通過在用戶和服務(wù)器之間引入一個(gè)媒介(Ajax engine)來異步發(fā)送請求,消除了傳統(tǒng)的發(fā)送請求等)來異步發(fā)送請求,消除了傳統(tǒng)的發(fā)送請求等待發(fā)送請求等待的特性,極大的提高了用戶體驗(yàn)待發(fā)送請求等待的特性,極大的提高了用戶體驗(yàn)10Process and Portfolio Management 2005 IBM CorporationJavaScript基礎(chǔ)基礎(chǔ)11Proce

7、ss and Portfolio Management 2005 IBM Corporation JavaScript是是Netscape公司與公司與Sun公司合作開發(fā)的。在公司合作開發(fā)的。在JavaScript出現(xiàn)之前,出現(xiàn)之前,Web瀏覽器不過是一種能夠顯示超文本文檔的軟件的基本瀏覽器不過是一種能夠顯示超文本文檔的軟件的基本部分。而在部分。而在JavaScript之后,網(wǎng)頁的內(nèi)容不再局限于枯燥的文本,可之后,網(wǎng)頁的內(nèi)容不再局限于枯燥的文本,可交互性得到了顯著的改善交互性得到了顯著的改善 JavaScript是一種腳本語言,一種解釋性的,基于對象的腳本語言。是一種腳本語言,一種解釋性的,基于

8、對象的腳本語言。JavaScript腳本通常只能通過腳本通常只能通過Web瀏覽器進(jìn)行解釋和執(zhí)行而不是像普瀏覽器進(jìn)行解釋和執(zhí)行而不是像普通意義上的程序那樣可以獨(dú)立運(yùn)行通意義上的程序那樣可以獨(dú)立運(yùn)行 在在HTML基礎(chǔ)上,基礎(chǔ)上,使用使用JavaScript 可以開發(fā)交互式可以開發(fā)交互式Web網(wǎng)頁。網(wǎng)頁。 JavaScript的出現(xiàn)使得網(wǎng)頁和用戶之間實(shí)現(xiàn)了一種實(shí)時(shí)性的、動(dòng)態(tài)的的出現(xiàn)使得網(wǎng)頁和用戶之間實(shí)現(xiàn)了一種實(shí)時(shí)性的、動(dòng)態(tài)的、交互性的關(guān)系,使網(wǎng)頁包含更多活躍的元素和更加精彩的內(nèi)容、交互性的關(guān)系,使網(wǎng)頁包含更多活躍的元素和更加精彩的內(nèi)容 注意,注意,JavaScript與與Java沒有任何聯(lián)系沒有任何

9、聯(lián)系12Process and Portfolio Management 2005 IBM Corporation JavaScript腳本的基本組成單位。腳本的基本組成單位。 只需要簡單地把各條語句放在不同的行上就可以分割開來只需要簡單地把各條語句放在不同的行上就可以分割開來,不需要加分號(hào),不需要加分號(hào)“;”結(jié)束結(jié)束:4first statement4second statement 但在每條語句的末尾添加但在每條語句的末尾添加“;”是一種良好的編程習(xí)慣:是一種良好的編程習(xí)慣:4first statement;4second statement;13Process and Portfolio

10、 Management 2005 IBM Corporation 單行注釋(雙斜杠):單行注釋(雙斜杠):4/ line1 多行注釋:多行注釋:4/* line1 line2 */ HTML風(fēng)格注釋(不推薦使用):風(fēng)格注釋(不推薦使用):4”來結(jié)束來結(jié)束14Process and Portfolio Management 2005 IBM Corporation JavaScript不要求在聲明變量時(shí)必須明確指出其數(shù)據(jù)類型不要求在聲明變量時(shí)必須明確指出其數(shù)據(jù)類型(所以稱(所以稱JavaScript為弱類型語言),可以使用統(tǒng)一的關(guān)為弱類型語言),可以使用統(tǒng)一的關(guān)鍵字鍵字var進(jìn)行聲明:進(jìn)行聲明:

11、4var age = 33;4mood = “happy”; 但是提前對變量做出聲明是一種良好的編程習(xí)慣但是提前對變量做出聲明是一種良好的編程習(xí)慣 變量名允許包含字母、數(shù)字、美元符號(hào)變量名允許包含字母、數(shù)字、美元符號(hào)($)和下劃線字符和下劃線字符,但不允許包括空格或標(biāo)點(diǎn)符號(hào),但不允許包括空格或標(biāo)點(diǎn)符號(hào)15Process and Portfolio Management 2005 IBM Corporation JavaScript變量的類型是由變量的值決定的,可以對同一個(gè)變量賦予變量的類型是由變量的值決定的,可以對同一個(gè)變量賦予不同數(shù)據(jù)類型的值:不同數(shù)據(jù)類型的值:4var age = “thi

12、rty three”;4age = 33; JavaScript中重要的數(shù)據(jù)類型:中重要的數(shù)據(jù)類型:4未定義(未定義(undefined),變量未定義),變量未定義4空(空(null),變量未初始化),變量未初始化4字符串(字符串(string),可以放在單引號(hào)或雙引號(hào)中),可以放在單引號(hào)或雙引號(hào)中4數(shù)值(數(shù)值(number),可以表示整數(shù)、浮點(diǎn)數(shù)),可以表示整數(shù)、浮點(diǎn)數(shù)4布爾型(布爾型(boolean),),true或或false4對象(對象(object)16Process and Portfolio Management 2005 IBM Corporation 數(shù)組用來存儲(chǔ)一組值,使用

13、關(guān)鍵字?jǐn)?shù)組用來存儲(chǔ)一組值,使用關(guān)鍵字Array來聲明,聲明時(shí)可以指明數(shù)來聲明,聲明時(shí)可以指明數(shù)組的長度:組的長度:4var colors = new Array();4var colors = new Array(3); 其中其中new關(guān)鍵字可以省略,類似其它語言,數(shù)組的下標(biāo)從關(guān)鍵字可以省略,類似其它語言,數(shù)組的下標(biāo)從0開始,賦開始,賦值方法也和其它語言類似:值方法也和其它語言類似:4colors0 = “red”;4colors1 = “black”;4colors2 = “white”; 還可以使用方括號(hào)創(chuàng)建數(shù)組時(shí)同時(shí)初始化:還可以使用方括號(hào)創(chuàng)建數(shù)組時(shí)同時(shí)初始化:4var colors =

14、 “red”, “black”, “white”;17Process and Portfolio Management 2005 IBM Corporation 使用方括號(hào)創(chuàng)建數(shù)組對象的簡單方法:使用方括號(hào)創(chuàng)建數(shù)組對象的簡單方法:4var colors = ; /聲明空數(shù)組對象聲明空數(shù)組對象4colors0 = “red”; 4colors1 = “black”; 通過數(shù)組的通過數(shù)組的length屬性可以得到數(shù)組中元素的個(gè)數(shù)。數(shù)組的長度可以屬性可以得到數(shù)組中元素的個(gè)數(shù)。數(shù)組的長度可以動(dòng)態(tài)擴(kuò)展:動(dòng)態(tài)擴(kuò)展:4colors3 = “blue”;4colors8 = “grey”; 關(guān)聯(lián)數(shù)組:在填充數(shù)

15、組時(shí)為每個(gè)新元素明確地給出下標(biāo):關(guān)聯(lián)數(shù)組:在填充數(shù)組時(shí)為每個(gè)新元素明確地給出下標(biāo):4colors“r” = “red”;4colors“b” = “black”;18Process and Portfolio Management 2005 IBM Corporation JavaScript中的算術(shù)運(yùn)算符(中的算術(shù)運(yùn)算符(+、-、*、/、+、-等)、等)、比較運(yùn)算符(比較運(yùn)算符(、=、=)、條件語句()、條件語句(if、while、for等)等)19Process and Portfolio Management 2005 IBM Corporation 使用函數(shù)可以避免重復(fù)輸入大量相同的內(nèi)

16、容。使用函數(shù)可以避免重復(fù)輸入大量相同的內(nèi)容。JavaScript中使用中使用function關(guān)關(guān)鍵字定義函數(shù):鍵字定義函數(shù):4function funcname (arg1, arg2, ) statements; 聲明一個(gè)簡單的函數(shù):聲明一個(gè)簡單的函數(shù):4function multiply (num1, num2) var total = num1 * num2;return total; 聲明后可以直接調(diào)用此函數(shù)獲取結(jié)果:聲明后可以直接調(diào)用此函數(shù)獲取結(jié)果:var result = multiply (5, 9);注意,注意,JavaScript中的函數(shù)不需聲明返回類型,參數(shù)也不需要聲明類型

17、中的函數(shù)不需聲明返回類型,參數(shù)也不需要聲明類型20Process and Portfolio Management 2005 IBM Corporation JavaScript對象是由一組相關(guān)的屬性和方法構(gòu)成的數(shù)據(jù)實(shí)體。屬性和方法都要使用對象是由一組相關(guān)的屬性和方法構(gòu)成的數(shù)據(jù)實(shí)體。屬性和方法都要使用“.”來訪問:來訪問:4 perty4 object.method() 使用函數(shù)來定義使用函數(shù)來定義“類類”:4 function Person() this.age = 12; = “no name”;this.sayHello = function() a

18、lert (“Hello ” + ); /其中其中this關(guān)鍵字不能省略!關(guān)鍵字不能省略! 使用使用new關(guān)鍵字來創(chuàng)建對象實(shí)例:關(guān)鍵字來創(chuàng)建對象實(shí)例:var vincent = new Person();21Process and Portfolio Management 2005 IBM CorporationDOM基礎(chǔ)基礎(chǔ)22Process and Portfolio Management 2005 IBM Corporation DOM是是”Document Object Model”(文檔對象模型)的(文檔對象模型)的首字母縮寫。當(dāng)創(chuàng)建了一個(gè)網(wǎng)頁并把它加載到首字母縮寫

19、。當(dāng)創(chuàng)建了一個(gè)網(wǎng)頁并把它加載到Web瀏覽器瀏覽器中時(shí),就會(huì)在幕后創(chuàng)建一個(gè)文檔對象模型中時(shí),就會(huì)在幕后創(chuàng)建一個(gè)文檔對象模型 DOM表示被加載到瀏覽器窗口里的當(dāng)前頁面:瀏覽器向表示被加載到瀏覽器窗口里的當(dāng)前頁面:瀏覽器向我們提供了當(dāng)前頁面的模型,而我們可以通過我們提供了當(dāng)前頁面的模型,而我們可以通過JavaScript訪問這個(gè)模型訪問這個(gè)模型 DOM把一份文檔表示為一棵樹把一份文檔表示為一棵樹23Process and Portfolio Management 2005 IBM Corporation 如下的如下的HTML頁面:頁面:24Process and Portfolio Manageme

20、nt 2005 IBM Corporation 瀏覽器加載該頁面并將之轉(zhuǎn)換為樹形結(jié)構(gòu):瀏覽器加載該頁面并將之轉(zhuǎn)換為樹形結(jié)構(gòu):25Process and Portfolio Management 2005 IBM Corporation DOM樹中的一切是以最外層的樹中的一切是以最外層的HTML包含元素,即包含元素,即html元素開始的元素開始的。使用樹的比喻,這叫做根元素(。使用樹的比喻,這叫做根元素(root element) 從根流出的線表示不同標(biāo)記部分之間的關(guān)系。從根流出的線表示不同標(biāo)記部分之間的關(guān)系。head和和body元素是元素是html根元素的孩子(根元素的孩子(child););

21、title是是head的孩子,而文本的孩子,而文本 “Trees, trees, everywhere”是是title的孩子;相對的,的孩子;相對的,head是是title的父親(的父親(parent),),title是文本是文本 “Trees, trees, everywhere” 的父親。處在的父親。處在同一層次的且互不包含的兩個(gè)分支(如同一層次的且互不包含的兩個(gè)分支(如head和和body)之間稱為兄弟)之間稱為兄弟(sibling)關(guān)系。整個(gè)樹就這樣組織下去,直到瀏覽器獲得與上圖)關(guān)系。整個(gè)樹就這樣組織下去,直到瀏覽器獲得與上圖類似的結(jié)構(gòu)類似的結(jié)構(gòu) 通常把這樣的樹結(jié)構(gòu)成為一棵節(jié)點(diǎn)樹通常

22、把這樣的樹結(jié)構(gòu)成為一棵節(jié)點(diǎn)樹26Process and Portfolio Management 2005 IBM Corporation DOM文檔是由節(jié)點(diǎn)構(gòu)成的集合,此時(shí)的節(jié)點(diǎn)是文檔樹上文檔是由節(jié)點(diǎn)構(gòu)成的集合,此時(shí)的節(jié)點(diǎn)是文檔樹上的樹枝或者樹葉的樹枝或者樹葉 DOM中節(jié)點(diǎn)的類型:中節(jié)點(diǎn)的類型:4元素節(jié)點(diǎn)(元素節(jié)點(diǎn)(element node),諸如),諸如、等。元等。元素節(jié)點(diǎn)可以包含其它的元素,唯一沒有被包含在其它元素里的元素素節(jié)點(diǎn)可以包含其它的元素,唯一沒有被包含在其它元素里的元素是是,它是根元素,它是根元素4屬性節(jié)點(diǎn)(屬性節(jié)點(diǎn)(attribute node),元素或多或少地有一些屬性,屬

23、性),元素或多或少地有一些屬性,屬性可以對元素做出一些具體的描述。因?yàn)閷傩钥偸潜环诺狡鹗紭?biāo)簽里可以對元素做出一些具體的描述。因?yàn)閷傩钥偸潜环诺狡鹗紭?biāo)簽里,所以屬性節(jié)點(diǎn)總是被包含在元素節(jié)點(diǎn)中,所以屬性節(jié)點(diǎn)總是被包含在元素節(jié)點(diǎn)中4文本節(jié)點(diǎn)(文本節(jié)點(diǎn)(text node),),元素中包含著文本節(jié)點(diǎn)元素中包含著文本節(jié)點(diǎn)“Trees, trees, everywhere”27Process and Portfolio Management 2005 IBM Corporation getElementById(id)4返回一個(gè)給定返回一個(gè)給定id屬性的元素節(jié)點(diǎn)相對應(yīng)的對象。這個(gè)方法是與屬性的元素節(jié)點(diǎn)相對

24、應(yīng)的對象。這個(gè)方法是與document對象相關(guān)聯(lián)的函數(shù)。其中對象相關(guān)聯(lián)的函數(shù)。其中document對象代表著整個(gè)對象代表著整個(gè)HTML文檔并可以用文檔并可以用來訪問所有頁面中的元素來訪問所有頁面中的元素 getElementsByTagName(tagname)4返回一個(gè)對象數(shù)組,它們分別對應(yīng)著文檔里的一個(gè)特定的元素節(jié)點(diǎn)返回一個(gè)對象數(shù)組,它們分別對應(yīng)著文檔里的一個(gè)特定的元素節(jié)點(diǎn) getAttribute()4返回對象的屬性值返回對象的屬性值 setAttribute()4修改對象的屬性值修改對象的屬性值28Process and Portfolio Management 2005 IBM Co

25、rporation childNodes4可以將節(jié)點(diǎn)樹中任何一個(gè)元素的所有子元素檢索出來,這個(gè)屬性返回一個(gè)可以將節(jié)點(diǎn)樹中任何一個(gè)元素的所有子元素檢索出來,這個(gè)屬性返回一個(gè)數(shù)組,包含了給定元素節(jié)點(diǎn)的全體子元素?cái)?shù)組,包含了給定元素節(jié)點(diǎn)的全體子元素 nodeName4返回元素節(jié)點(diǎn)的名稱。注意,返回的結(jié)果全部是大寫返回元素節(jié)點(diǎn)的名稱。注意,返回的結(jié)果全部是大寫 nodeType4用來區(qū)分節(jié)點(diǎn)的類型,元素節(jié)點(diǎn)的用來區(qū)分節(jié)點(diǎn)的類型,元素節(jié)點(diǎn)的nodeType屬性值是屬性值是1,屬性節(jié)點(diǎn)的,屬性節(jié)點(diǎn)的nodeType屬性值是屬性值是2,文本節(jié)點(diǎn)的,文本節(jié)點(diǎn)的nodeType屬性值是屬性值是3 nodeVal

26、ue4可以用來存取文本節(jié)點(diǎn)的值。對于元素節(jié)點(diǎn)或?qū)傩怨?jié)點(diǎn)這個(gè)屬性返回空可以用來存取文本節(jié)點(diǎn)的值。對于元素節(jié)點(diǎn)或?qū)傩怨?jié)點(diǎn)這個(gè)屬性返回空29Process and Portfolio Management 2005 IBM Corporation firstChild和和lastChild4第一個(gè)和最后一個(gè)孩子節(jié)點(diǎn)。第一個(gè)和最后一個(gè)孩子節(jié)點(diǎn)。4node.firstChild等價(jià)于等價(jià)于node.childNodes0,4node.lastChild等價(jià)于等價(jià)于node.childNodesnode.childNodes.length 1 parentNode4返回元素的父節(jié)點(diǎn)返回元素的父節(jié)點(diǎn) nex

27、tSibling4返回下一個(gè)兄弟節(jié)點(diǎn)返回下一個(gè)兄弟節(jié)點(diǎn)30Process and Portfolio Management 2005 IBM Corporation createElement(tagname)4 創(chuàng)建新的元素節(jié)點(diǎn),此方法與創(chuàng)建新的元素節(jié)點(diǎn),此方法與document對象相關(guān)聯(lián)。新建的元素節(jié)點(diǎn)并未與節(jié)點(diǎn)樹相連對象相關(guān)聯(lián)。新建的元素節(jié)點(diǎn)并未與節(jié)點(diǎn)樹相連 appendChild(node)4 把新建的節(jié)點(diǎn)插入到節(jié)點(diǎn)樹的某個(gè)節(jié)點(diǎn)下,成為這個(gè)節(jié)點(diǎn)的子節(jié)點(diǎn)把新建的節(jié)點(diǎn)插入到節(jié)點(diǎn)樹的某個(gè)節(jié)點(diǎn)下,成為這個(gè)節(jié)點(diǎn)的子節(jié)點(diǎn) createTextNode(text)4 創(chuàng)建文本節(jié)點(diǎn)創(chuàng)建文本節(jié)點(diǎn) ins

28、ertBefore(newNode, targetNode)4 把一個(gè)新元素插入到一個(gè)現(xiàn)有元素的前面把一個(gè)新元素插入到一個(gè)現(xiàn)有元素的前面 replaceChild(newChild, oldChild)4 替換一個(gè)孩子節(jié)點(diǎn)替換一個(gè)孩子節(jié)點(diǎn) removeChild(node)4 刪除一個(gè)孩子節(jié)點(diǎn)刪除一個(gè)孩子節(jié)點(diǎn)31Process and Portfolio Management 2005 IBM Corporation基于基于DOM的的Web應(yīng)用應(yīng)用程序示例程序示例32Process and Portfolio Management 2005 IBM Corporation 首先建立一個(gè)非常簡單

29、的應(yīng)用程序,然后再添加一點(diǎn)首先建立一個(gè)非常簡單的應(yīng)用程序,然后再添加一點(diǎn)DOM魔法。注意,魔法。注意,DOM可以移動(dòng)網(wǎng)頁中的任何東西而不可以移動(dòng)網(wǎng)頁中的任何東西而不需要提交表單。創(chuàng)建一個(gè)簡單的網(wǎng)頁,上面只顯示一個(gè)普需要提交表單。創(chuàng)建一個(gè)簡單的網(wǎng)頁,上面只顯示一個(gè)普通的舊式大禮帽,還有一個(gè)標(biāo)記為通的舊式大禮帽,還有一個(gè)標(biāo)記為 Hocus Pocus! 的按的按鈕鈕33Process and Portfolio Management 2005 IBM Corporation 注意按鈕的類型是注意按鈕的類型是 button 而不是提交按鈕。如果使用提交按鈕,單擊該按而不是提交按鈕。如果使用提交按鈕,

30、單擊該按鈕將導(dǎo)致瀏覽器提交表單。通過使用一般輸入按鈕而不是提交按鈕,可以把鈕將導(dǎo)致瀏覽器提交表單。通過使用一般輸入按鈕而不是提交按鈕,可以把 JavaScript 函數(shù)和它連接起來與瀏覽器交互而無需提交表單函數(shù)和它連接起來與瀏覽器交互而無需提交表單34Process and Portfolio Management 2005 IBM Corporation35Process and Portfolio Management 2005 IBM Corporation 下面增加一些魔法,用兔子的圖片替換頁面中原有的圖片:下面增加一些魔法,用兔子的圖片替換頁面中原有的圖片:36Process and

31、 Portfolio Management 2005 IBM Corporation 首先找到網(wǎng)頁中表示首先找到網(wǎng)頁中表示img元素的元素的DOM節(jié)點(diǎn)。一般來說,最節(jié)點(diǎn)。一般來說,最簡單的辦法是用簡單的辦法是用getElementById()方法,它屬于代表方法,它屬于代表Web頁面的頁面的document對象:對象:4var elementNode = document.getElementById(“id);37Process and Portfolio Management 2005 IBM Corporation 完成所需修改有幾種方法:有些簡單,有些麻煩。但是運(yùn)用完成所需修改有幾種方

32、法:有些簡單,有些麻煩。但是運(yùn)用較麻煩的辦法是一次很好的較麻煩的辦法是一次很好的DOM練習(xí),首先看看換圖片比較練習(xí),首先看看換圖片比較麻煩的辦法;后面再重新分析一下看看有沒有更簡單的辦法麻煩的辦法;后面再重新分析一下看看有沒有更簡單的辦法 用帶兔子的新照片替換原有圖片的辦法如下:用帶兔子的新照片替換原有圖片的辦法如下:41、創(chuàng)建新的、創(chuàng)建新的img元素元素42、訪問當(dāng)前、訪問當(dāng)前img元素的父元素,也就是它的容器元素的父元素,也就是它的容器43、在已有、在已有img元素之前插入新的元素之前插入新的img元素作為該容器的子級元素作為該容器的子級44、刪除原來的、刪除原來的img元素元素45、結(jié)合

33、起來以便在用戶單擊按鈕時(shí)調(diào)用剛剛創(chuàng)建的函數(shù)、結(jié)合起來以便在用戶單擊按鈕時(shí)調(diào)用剛剛創(chuàng)建的函數(shù)38Process and Portfolio Management 2005 IBM Corporation 創(chuàng)建新的創(chuàng)建新的img元素:元素:4var newImage = document.createElement(img);可以創(chuàng)建一個(gè)新的元素節(jié)點(diǎn),元素名為可以創(chuàng)建一個(gè)新的元素節(jié)點(diǎn),元素名為img。在。在HTML中基本中基本上就是:上就是: 下面需要增加一個(gè)屬性下面需要增加一個(gè)屬性src,它指定了要加載的圖片:,它指定了要加載的圖片:4newImage.setAttribute(src, rab

34、bit-hat.gif); 注:如果對已有的屬性調(diào)用注:如果對已有的屬性調(diào)用setAttribute(),則把原來的值替,則把原來的值替換為指定的值。但是,如果調(diào)用換為指定的值。但是,如果調(diào)用setAttribute()并指定一個(gè)不并指定一個(gè)不存在的屬性,存在的屬性,DOM就會(huì)使用提供的值增加一個(gè)屬性就會(huì)使用提供的值增加一個(gè)屬性39Process and Portfolio Management 2005 IBM Corporation 現(xiàn)在有了要插入的圖片,還需要找到插入的地方。要將其插現(xiàn)在有了要插入的圖片,還需要找到插入的地方。要將其插入到已有圖片之前然后再刪除原來的圖片。為此需要知道已入

35、到已有圖片之前然后再刪除原來的圖片。為此需要知道已有圖片的父元素:有圖片的父元素:4var imgParent = hatImage.parentNode;40Process and Portfolio Management 2005 IBM Corporation 添加子節(jié)點(diǎn)的方法:添加子節(jié)點(diǎn)的方法:4insertBefore(newNode, targetNode)4appendChild(newNode) 把新圖片元素插入到原有圖片之前:把新圖片元素插入到原有圖片之前:4imgParent.insertBefore(newImage, hatImage); 現(xiàn)在原圖片的父元素有了兩個(gè)現(xiàn)在

36、原圖片的父元素有了兩個(gè) 子元素:新圖片和緊跟在后面子元素:新圖片和緊跟在后面的舊圖片的舊圖片41Process and Portfolio Management 2005 IBM Corporation 因?yàn)橐呀?jīng)得到了舊圖片元素的父節(jié)點(diǎn),只要調(diào)用因?yàn)橐呀?jīng)得到了舊圖片元素的父節(jié)點(diǎn),只要調(diào)用removeChild()并把需要?jiǎng)h除的節(jié)點(diǎn)傳遞給它即可:并把需要?jiǎng)h除的節(jié)點(diǎn)傳遞給它即可:4imgParent.removeChild(hatImage); 完整的完整的JavaScript函數(shù):函數(shù):42Process and Portfolio Management 2005 IBM Corporation

37、 每當(dāng)用戶點(diǎn)擊每當(dāng)用戶點(diǎn)擊Hocus Pocus!按鈕的時(shí)候運(yùn)行按鈕的時(shí)候運(yùn)行showRabbit()函數(shù)。為此只要向函數(shù)。為此只要向HTML中增加一個(gè)簡單的中增加一個(gè)簡單的 onclick事件處理事件處理程序即可:程序即可:43Process and Portfolio Management 2005 IBM Corporation 1、使用、使用replaceChild()函數(shù)函數(shù)4imgParent.replaceChild(newImage, hatImage); 2、直接修改圖片的、直接修改圖片的src屬性屬性4hatImage.setAttribute(src, rabbit-ha

38、t.gif); 3、使用、使用HTML DOM方法方法4hatImage.src = “rabbit-hat.gif”;44Process and Portfolio Management 2005 IBM Corporation 雖然兔子從帽子中跳出來了,但是屏幕下方的按鈕仍然顯示雖然兔子從帽子中跳出來了,但是屏幕下方的按鈕仍然顯示 Hocus Pocus! 和調(diào)用和調(diào)用 showRabbit(),下面做一些修改,當(dāng),下面做一些修改,當(dāng)用戶再次點(diǎn)擊按鈕時(shí)把兔子藏起來!用戶再次點(diǎn)擊按鈕時(shí)把兔子藏起來!45Process and Portfolio Management 2005 IBM Cor

39、poration 使用我們熟悉的方法,實(shí)現(xiàn)這個(gè)簡單的功能,在使用我們熟悉的方法,實(shí)現(xiàn)這個(gè)簡單的功能,在showRabbit() 函數(shù)中添加如下語句:函數(shù)中添加如下語句:46Process and Portfolio Management 2005 IBM Corporation 隱藏兔子的方法基本上和放兔子出來完全相反,將圖片的隱藏兔子的方法基本上和放兔子出來完全相反,將圖片的src屬性再改回舊圖片。創(chuàng)建一個(gè)新的屬性再改回舊圖片。創(chuàng)建一個(gè)新的 JavaScript 函數(shù)來完成這函數(shù)來完成這項(xiàng)任務(wù):項(xiàng)任務(wù):47Process and Portfolio Management 2005 IBM C

40、orporation 現(xiàn)在雖然按鈕的標(biāo)簽改變了,但是單擊按鈕時(shí)的動(dòng)作沒有變。當(dāng)用戶單擊按鈕時(shí)現(xiàn)在雖然按鈕的標(biāo)簽改變了,但是單擊按鈕時(shí)的動(dòng)作沒有變。當(dāng)用戶單擊按鈕時(shí)可以使用可以使用DOM改變事件或者發(fā)生的動(dòng)作。在改變事件或者發(fā)生的動(dòng)作。在JavaScript中,可以通過按鈕的中,可以通過按鈕的onclick屬性來引用該事件,因此可以改變按鈕觸發(fā)的事件:只要賦給屬性來引用該事件,因此可以改變按鈕觸發(fā)的事件:只要賦給onclick屬性屬性一個(gè)新的函數(shù)一個(gè)新的函數(shù)48Process and Portfolio Management 2005 IBM Corporation使用使用Ajax發(fā)送異步請求發(fā)

41、送異步請求49Process and Portfolio Management 2005 IBM Corporation 考慮以下情景:考慮以下情景:4當(dāng)用戶輸入郵編后,系統(tǒng)自動(dòng)填充相應(yīng)的城市和省份當(dāng)用戶輸入郵編后,系統(tǒng)自動(dòng)填充相應(yīng)的城市和省份50Process and Portfolio Management 2005 IBM Corporation51Process and Portfolio Management 2005 IBM Corporation 要實(shí)現(xiàn)這種功能,必須非常熟悉一個(gè)要實(shí)現(xiàn)這種功能,必須非常熟悉一個(gè) JavaScript 對象,即對象,即 XMLHttpRequest

42、(簡稱(簡稱XHR)。這個(gè)小小的對象實(shí)際上已)。這個(gè)小小的對象實(shí)際上已經(jīng)在幾種瀏覽器中存在一段時(shí)間了,它是經(jīng)在幾種瀏覽器中存在一段時(shí)間了,它是Ajax 的核心。該對的核心。該對象的幾個(gè)常用方法和屬性:象的幾個(gè)常用方法和屬性:4open():建立到服務(wù)器的新請求:建立到服務(wù)器的新請求4send():向服務(wù)器發(fā)送請求:向服務(wù)器發(fā)送請求4readyState:提供當(dāng)前:提供當(dāng)前 HTML 的就緒狀態(tài)的就緒狀態(tài)4status:服務(wù)器響應(yīng)的狀態(tài)代碼:服務(wù)器響應(yīng)的狀態(tài)代碼4responseText:服務(wù)器返回的請求響應(yīng)文本:服務(wù)器返回的請求響應(yīng)文本52Process and Portfolio Manag

43、ement 2005 IBM Corporation 創(chuàng)建跨瀏覽器的創(chuàng)建跨瀏覽器的XMLHttpRequest對象:對象:53Process and Portfolio Management 2005 IBM Corporation 注意不要被這些花括號(hào)迷住了眼睛,下面分別介紹每一步注意不要被這些花括號(hào)迷住了眼睛,下面分別介紹每一步:4創(chuàng)建一個(gè)新變量創(chuàng)建一個(gè)新變量 request 并賦值并賦值 false。使用。使用 false 作為判斷條件,表示還沒作為判斷條件,表示還沒有創(chuàng)建有創(chuàng)建 XMLHttpRequest 對象對象4增加增加try/catch塊:塊: 嘗試創(chuàng)建嘗試創(chuàng)建 XMLHttp

44、Request 對象對象 如果失敗如果失敗,先嘗試使用較新版本的先嘗試使用較新版本的Microsoft瀏覽器創(chuàng)建瀏覽器創(chuàng)建 Microsoft 兼容的對象兼容的對象(Msxml2.XMLHTTP),如果失?。▏L試使用較老版本的),如果失?。▏L試使用較老版本的Microsoft瀏覽器創(chuàng)瀏覽器創(chuàng)建建 Microsoft兼容的對象(兼容的對象(Microsoft.XMLHTTP) 如果全部失敗,則保證如果全部失敗,則保證request的值仍然為的值仍然為false4檢查檢查request是否仍然為是否仍然為false(如果一切順利就不會(huì)是(如果一切順利就不會(huì)是false)4如果出現(xiàn)問題則使用如果出現(xiàn)

45、問題則使用JavaScript警告通知用戶出現(xiàn)了問題警告通知用戶出現(xiàn)了問題54Process and Portfolio Management 2005 IBM Corporation 準(zhǔn)備好準(zhǔn)備好XMLHttpRequest對象,就可以建立到服務(wù)器的請求對象,就可以建立到服務(wù)器的請求了。了。4首先首先結(jié)合一些表單中的數(shù)據(jù)來構(gòu)造結(jié)合一些表單中的數(shù)據(jù)來構(gòu)造URL:4注:注:escape() 方法用于轉(zhuǎn)義不能用明文正確發(fā)送的任何字符。比如方法用于轉(zhuǎn)義不能用明文正確發(fā)送的任何字符。比如,空格將被轉(zhuǎn)換成字符,空格將被轉(zhuǎn)換成字符 %20,從而能夠在,從而能夠在 URL 中傳遞這些字符。中傳遞這些字符。4

46、然后建立請求:然后建立請求:55Process and Portfolio Management 2005 IBM Corporation 使使用用 XMLHttpRequest 對象的對象的 open() 方法來方法來建立請求建立請求。該方法有五個(gè)參數(shù):。該方法有五個(gè)參數(shù):4request-type:發(fā)送請求的類型。典型的值是:發(fā)送請求的類型。典型的值是 GET 或或 POST,但也可以發(fā)送,但也可以發(fā)送 HEAD 請求請求4url:要連接的:要連接的 URL4asynch:如果希望使用異步連接則為:如果希望使用異步連接則為 true,否則為,否則為 false。該參數(shù)是可選的,默認(rèn)為。該參

47、數(shù)是可選的,默認(rèn)為 true4username:如果需要身份驗(yàn)證,則可以在此指定用戶名。該可選參數(shù)沒有默認(rèn)值:如果需要身份驗(yàn)證,則可以在此指定用戶名。該可選參數(shù)沒有默認(rèn)值4password:如果需要身份驗(yàn)證,則可以在此指定口令。該可選參數(shù)沒有默認(rèn)值:如果需要身份驗(yàn)證,則可以在此指定口令。該可選參數(shù)沒有默認(rèn)值 通常使用其中的前三個(gè)參數(shù)。事實(shí)上,即使需要異步連接,通常指定第三個(gè)參通常使用其中的前三個(gè)參數(shù)。事實(shí)上,即使需要異步連接,通常指定第三個(gè)參數(shù)為數(shù)為 “true”,這樣更容易理解,這樣更容易理解56Process and Portfolio Management 2005 IBM Corpor

48、ation 一旦請求用一旦請求用 open() 配置好之后,就可以使用配置好之后,就可以使用send()方法發(fā)方法發(fā)送請求了,送請求了,send() 方法只有一個(gè)參數(shù),就是要發(fā)送的內(nèi)容方法只有一個(gè)參數(shù),就是要發(fā)送的內(nèi)容 但是我們前面通過但是我們前面通過URL本身已經(jīng)發(fā)送了本身已經(jīng)發(fā)送了zipcode的值,所以的值,所以這里不需要通過這里不需要通過 send() 傳遞數(shù)據(jù),只要傳遞傳遞數(shù)據(jù),只要傳遞 null 作為該方作為該方法的參數(shù)即可:法的參數(shù)即可:57Process and Portfolio Management 2005 IBM Corporation 由于是異步請求,請求發(fā)出后由于是

49、異步請求,請求發(fā)出后JavaScript 方法不會(huì)等待服務(wù)器處理完方法不會(huì)等待服務(wù)器處理完成,因此代碼將繼續(xù)執(zhí)行,就是說,將退出該方法而把控制返回給表單成,因此代碼將繼續(xù)執(zhí)行,就是說,將退出該方法而把控制返回給表單。用戶可以繼續(xù)輸入信息,應(yīng)用程序不會(huì)等待服務(wù)器。用戶可以繼續(xù)輸入信息,應(yīng)用程序不會(huì)等待服務(wù)器 當(dāng)服務(wù)器完成請求之后,需要指定該如何處理響應(yīng)。當(dāng)服務(wù)器完成請求之后,需要指定該如何處理響應(yīng)。XMLHttpRequest對象的對象的onreadystatechange屬性允許指定一個(gè)回調(diào)函數(shù)反向調(diào)用屬性允許指定一個(gè)回調(diào)函數(shù)反向調(diào)用Web頁面中的代碼頁面中的代碼 當(dāng)服務(wù)器完成請求之后,會(huì)查看

50、當(dāng)服務(wù)器完成請求之后,會(huì)查看XMLHttpRequest對象,特別是對象,特別是 onreadystatechange屬性。然后調(diào)用該屬性指定的任何方法。之所以屬性。然后調(diào)用該屬性指定的任何方法。之所以稱為回調(diào)是因?yàn)橛煞?wù)器向網(wǎng)頁發(fā)起調(diào)用,無論網(wǎng)頁本身正在做什么。稱為回調(diào)是因?yàn)橛煞?wù)器向網(wǎng)頁發(fā)起調(diào)用,無論網(wǎng)頁本身正在做什么。這就是稱之為異步的原因:用戶在一層上操作表單,而在另一層上服務(wù)這就是稱之為異步的原因:用戶在一層上操作表單,而在另一層上服務(wù)器響應(yīng)請求并觸發(fā)器響應(yīng)請求并觸發(fā)onreadystatechange屬性指定的回調(diào)方法屬性指定的回調(diào)方法58Process and Portfolio

51、 Management 2005 IBM Corporation 需要特別注意的是該屬性在代碼中設(shè)置的位置需要特別注意的是該屬性在代碼中設(shè)置的位置 它是在調(diào)用它是在調(diào)用send()之前設(shè)置的。發(fā)送請求之前必須設(shè)置該屬性,這樣服務(wù)器在回答完成請之前設(shè)置的。發(fā)送請求之前必須設(shè)置該屬性,這樣服務(wù)器在回答完成請求之后能夠查看該屬性!求之后能夠查看該屬性! 注意,這里注意,這里updatePage是個(gè)函數(shù)名稱,不能寫成是個(gè)函數(shù)名稱,不能寫成updatePage() 函數(shù)調(diào)函數(shù)調(diào)用的形式!這表示將用的形式!這表示將updatePage()函數(shù)運(yùn)行的返回結(jié)果賦值給函數(shù)運(yùn)行的返回結(jié)果賦值給onreadysta

52、techange屬性。體會(huì)屬性。體會(huì)JavaScript中函數(shù)也是對象的特征中函數(shù)也是對象的特征59Process and Portfolio Management 2005 IBM Corporation 請求發(fā)送后,用戶可以繼續(xù)使用請求發(fā)送后,用戶可以繼續(xù)使用Web表單(同時(shí)服務(wù)器在表單(同時(shí)服務(wù)器在處理請求)。而當(dāng)服務(wù)器完成了請求處理,服務(wù)器查看處理請求)。而當(dāng)服務(wù)器完成了請求處理,服務(wù)器查看onreadystatechange屬性確定要調(diào)用的方法。除此以外,屬性確定要調(diào)用的方法。除此以外,可以將應(yīng)用程序看作其他應(yīng)用程序一樣,無論是否異步。換可以將應(yīng)用程序看作其他應(yīng)用程序一樣,無論是否異

53、步。換句話說,不一定要采取特殊的動(dòng)作編寫響應(yīng)服務(wù)器的方法,句話說,不一定要采取特殊的動(dòng)作編寫響應(yīng)服務(wù)器的方法,只需要改變表單或其它的頁面結(jié)構(gòu),讓用戶訪問另一個(gè)只需要改變表單或其它的頁面結(jié)構(gòu),讓用戶訪問另一個(gè) URL 或者做響應(yīng)服務(wù)器需要的任何事情或者做響應(yīng)服務(wù)器需要的任何事情 處理函數(shù)(僅彈出簡單的警告):處理函數(shù)(僅彈出簡單的警告):60Process and Portfolio Management 2005 IBM Corporation 運(yùn)行以上代碼,根據(jù)瀏覽器的不同,在表單停止彈出警告之前會(huì)看到兩運(yùn)行以上代碼,根據(jù)瀏覽器的不同,在表單停止彈出警告之前會(huì)看到兩次、三次甚至四次警告。原因

54、在于還沒有考慮次、三次甚至四次警告。原因在于還沒有考慮HTTP就緒狀態(tài),這是請就緒狀態(tài),這是請求求/響應(yīng)循環(huán)中的一個(gè)重要部分響應(yīng)循環(huán)中的一個(gè)重要部分 HTTP就緒狀態(tài)(就緒狀態(tài)(readyState)表示請求的狀態(tài)或情形。它用于確定該)表示請求的狀態(tài)或情形。它用于確定該請求是否已經(jīng)開始、是否得到了響應(yīng)或者請求請求是否已經(jīng)開始、是否得到了響應(yīng)或者請求/響應(yīng)模型是否已經(jīng)完成響應(yīng)模型是否已經(jīng)完成。它還可以幫助確定讀取服務(wù)器提供的響應(yīng)文本或數(shù)據(jù)是否安全。在。它還可以幫助確定讀取服務(wù)器提供的響應(yīng)文本或數(shù)據(jù)是否安全。在Ajax應(yīng)用程序中需要了解五種就緒狀態(tài):應(yīng)用程序中需要了解五種就緒狀態(tài):40:請求沒有發(fā)

55、出(在調(diào)用:請求沒有發(fā)出(在調(diào)用 open() 之前)之前)41:請求已經(jīng)建立但還沒有發(fā)出(調(diào)用:請求已經(jīng)建立但還沒有發(fā)出(調(diào)用 send() 之前)之前)42:請求已經(jīng)發(fā)出正在處理之中(這里通??梢詮捻憫?yīng)得到內(nèi)容頭部):請求已經(jīng)發(fā)出正在處理之中(這里通常可以從響應(yīng)得到內(nèi)容頭部)43:請求已經(jīng)處理,響應(yīng)中通常有部分?jǐn)?shù)據(jù)可用,但是服務(wù)器還沒有完成響應(yīng):請求已經(jīng)處理,響應(yīng)中通常有部分?jǐn)?shù)據(jù)可用,但是服務(wù)器還沒有完成響應(yīng)44:響應(yīng)已完成,可以訪問服務(wù)器響應(yīng)并使用它:響應(yīng)已完成,可以訪問服務(wù)器響應(yīng)并使用它61Process and Portfolio Management 2005 IBM Corpor

56、ation 與大多數(shù)跨瀏覽器問題一樣,這些就緒狀態(tài)的使用也不盡一致。實(shí)際上與大多數(shù)跨瀏覽器問題一樣,這些就緒狀態(tài)的使用也不盡一致。實(shí)際上很少出現(xiàn)就緒狀態(tài)從很少出現(xiàn)就緒狀態(tài)從0到到1、2、3再到再到4,一些瀏覽器從不報(bào)告,一些瀏覽器從不報(bào)告0或或1而直而直接從接從2開始,然后是開始,然后是3和和4,其他瀏覽器則報(bào)告所有的狀態(tài)。還有一些則,其他瀏覽器則報(bào)告所有的狀態(tài)。還有一些則多次報(bào)告就緒狀態(tài)多次報(bào)告就緒狀態(tài)1 對于對于Ajax編程,需要直接處理的惟一狀態(tài)就是就緒狀態(tài)編程,需要直接處理的惟一狀態(tài)就是就緒狀態(tài)4,它表示服務(wù),它表示服務(wù)器響應(yīng)已經(jīng)完成,可以安全地使用響應(yīng)數(shù)據(jù)了?;诖?,回調(diào)函數(shù)做如器響

57、應(yīng)已經(jīng)完成,可以安全地使用響應(yīng)數(shù)據(jù)了。基于此,回調(diào)函數(shù)做如下調(diào)整:下調(diào)整: 修改后就可以保證服務(wù)器的處理已經(jīng)完成,現(xiàn)在就會(huì)看到只顯示一次警修改后就可以保證服務(wù)器的處理已經(jīng)完成,現(xiàn)在就會(huì)看到只顯示一次警告信息了告信息了62Process and Portfolio Management 2005 IBM Corporation 以上代碼看起來似乎不錯(cuò),但是還有一個(gè)問題以上代碼看起來似乎不錯(cuò),但是還有一個(gè)問題 如果服務(wù)器響應(yīng)請求并完成如果服務(wù)器響應(yīng)請求并完成了處理但是報(bào)告了一個(gè)錯(cuò)誤怎么辦?服務(wù)器端代碼應(yīng)該是由了處理但是報(bào)告了一個(gè)錯(cuò)誤怎么辦?服務(wù)器端代碼應(yīng)該是由Ajax、JSP、普通、普通HTML表

58、單或其他類型的代碼調(diào)用的,但只能使用傳統(tǒng)的表單或其他類型的代碼調(diào)用的,但只能使用傳統(tǒng)的Web專用方法報(bào)告信專用方法報(bào)告信息。而在息。而在 Web 世界中,世界中,HTTP狀態(tài)碼(狀態(tài)碼(status)可以處理請求中可能發(fā)生的各)可以處理請求中可能發(fā)生的各種問題,比如:種問題,比如:4輸入了錯(cuò)誤的輸入了錯(cuò)誤的URL請求將得到請求將得到404錯(cuò)誤碼,它表示該頁面不存在錯(cuò)誤碼,它表示該頁面不存在4403和和401錯(cuò)誤碼表示所訪問的數(shù)據(jù)受到保護(hù)或者禁止訪問錯(cuò)誤碼表示所訪問的數(shù)據(jù)受到保護(hù)或者禁止訪問 無論哪種情況,這些錯(cuò)誤碼都是從無論哪種情況,這些錯(cuò)誤碼都是從完成的響應(yīng)完成的響應(yīng) 中得到的。換句話說,服

59、務(wù)器執(zhí)中得到的。換句話說,服務(wù)器執(zhí)行了請求(即行了請求(即HTTP就緒狀態(tài)是就緒狀態(tài)是4)但是沒有返回客戶機(jī)預(yù)期的數(shù)據(jù)。因此除了)但是沒有返回客戶機(jī)預(yù)期的數(shù)據(jù)。因此除了就緒狀態(tài)外,還需要檢查就緒狀態(tài)外,還需要檢查HTTP狀態(tài)。我們期望的狀態(tài)碼是狀態(tài)。我們期望的狀態(tài)碼是200,它表示一切順,它表示一切順利。如果就緒狀態(tài)是利。如果就緒狀態(tài)是4而且狀態(tài)碼是而且狀態(tài)碼是200,就可以處理服務(wù)器的數(shù)據(jù)了,而且這,就可以處理服務(wù)器的數(shù)據(jù)了,而且這些數(shù)據(jù)應(yīng)該就是要求的數(shù)據(jù)(而不是錯(cuò)誤或者其他有問題的信息)些數(shù)據(jù)應(yīng)該就是要求的數(shù)據(jù)(而不是錯(cuò)誤或者其他有問題的信息)63Process and Portfolio

60、 Management 2005 IBM Corporation 在回調(diào)函數(shù)中增加在回調(diào)函數(shù)中增加HTTP狀態(tài)(狀態(tài)(status)檢查:)檢查: 現(xiàn)在可以確保請求已經(jīng)處理完成(通過就緒狀態(tài)),服務(wù)器給出了正?,F(xiàn)在可以確保請求已經(jīng)處理完成(通過就緒狀態(tài)),服務(wù)器給出了正常的響應(yīng)(通過狀態(tài)碼),最后可以處理服務(wù)器返回的數(shù)據(jù)了。返回的數(shù)的響應(yīng)(通過狀態(tài)碼),最后可以處理服務(wù)器返回的數(shù)據(jù)了。返回的數(shù)據(jù)(文本形式)保存在據(jù)(文本形式)保存在XMLHttpRequest對象的對象的responseText屬性中屬性中。(如果服務(wù)器選擇使用。(如果服務(wù)器選擇使用XML響應(yīng),則也可以使用在響應(yīng),則也可以使用

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論