資源描述:
《使用ajax技術(shù)構(gòu)建更優(yōu)秀的web應(yīng)用程序》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、你可以在站點http://www.google.com/webhp?complete=1&hl=en處看到一種良好的AJAX實踐技術(shù)展示。在此頁面中,如果你把任何字母輸入到文本框內(nèi),那么隨后就會出現(xiàn)一個下拉列表框,其中的內(nèi)容直接來自于服務(wù)器而不必提交整個頁面。AJAX的核心是XMLHttpRequest對象??蛻舳四軌蛟诤笈_檢索并直接提交XML數(shù)據(jù)。為了把檢索的XML數(shù)據(jù)轉(zhuǎn)換成可生成的HTML內(nèi)容,需要依賴于客戶端文檔對象模型(DOM)讀取XML文檔結(jié)點樹并且組成用戶看得見的HTML元素。其實,AJ
2、AX并非象HTML,DHTML等一樣的單一技術(shù),它結(jié)合了不同的技術(shù): ·XMLHttpRequest對象被使用于與web服務(wù)器異步地交換數(shù)據(jù)?! ML被普遍用作把數(shù)據(jù)傳輸回服務(wù)器的格式(盡管任何格式都能使用,例如普通文本,HTML等)?! と绻褂肵ML作為轉(zhuǎn)換格式,那么DOM通常與如JavaScript這樣的客戶端腳本語言一起使用來動態(tài)地顯示和描述交互信息?! HTML(或HTML),CSS用于標記和信息格式化?! 《?、XMLHttpRequest對象 從歷史來看,是微軟首先在其In
3、ternetExplorer5forWindows中以一個ActiveX對象形式實現(xiàn)了XMLHttpRequest對象。隨后,由Mozilla工程的工程師實現(xiàn)了Mozilla1.0(和Netscape7)的一種兼容的本機版本;而稍后,蘋果公司在其Safari1.2上也實現(xiàn)了相同的工作。其實,在W3C標準的文檔對象模型(DOM)Level3加載與存儲規(guī)范中,也提到了類似的功能?,F(xiàn)在,它成為一種事實上的標準,并開始在以后發(fā)行的大多數(shù)瀏覽器中得到實現(xiàn)。 (一)創(chuàng)建對象 XMLHttpRequest對象
4、的創(chuàng)建方式因瀏覽器不同而有所不同。對于Safari和Mozilla來說,其創(chuàng)建方式如下所示:varreq=newXMLHttpRequest(); 對于InternetExplorer5.0+(指5.0及更高版本),則要把對象名傳遞到ActiveX構(gòu)造函數(shù)中:varreq=newActiveXObject("Microsoft.XMLHTTP"); 該對象的方法控制所有的操作,而其屬性存儲從服務(wù)器返回的各種數(shù)據(jù)片斷,例如XMLHttpObject.responseText包含從服務(wù)器返回的xml
5、或字符串值。 (二)方法 在WindowsIE5.0+、Safari1.2和Mozila中支持的XMLHttpRequest對象的方法列舉如下:方法描述abort()取消當前的請求。如果你在一個不處理請求(readyState0或4)的對象上調(diào)用它,"神秘的事情"發(fā)生了。getResponseHeader("headerLabel")返回單個頭標簽的字符串值getAllResponseHeaders()以一個串形式返回完整的頭(標簽和值)集合open("method","URL"[,asyncF
6、lag[,"userName"[,"password"]]])指派目標URL、方法及一個懸掛請求的其它可選屬性send(content)傳輸請求。(可選擇地)其中可以加入可寄送的字符串或DOM對象數(shù)據(jù)setRequestHeader("label","value")把一個標簽/值對指派給要發(fā)送的請求中的頭部 在上面的方法中,open和send方法是最重要的。下面,讓我們首先從應(yīng)用程序的觀點來討論open方法。varreq;………………………req=newActiveXObject("Microso
7、ft.XMLHTTP");……………varurl="AjaxServer.aspx?PubID="+ID;……………//打開一個到URL的GET請求req.open("GET",url,true);//實際發(fā)送一個空請求req.send(null); 注意 在這個示例應(yīng)用程序中,AjaxClient.aspx頁面是用戶接口,AjaxServer.aspx則負責提供每一個用戶請求時的數(shù)據(jù)。要特別注意的是,AjaxServer.aspx頁面不應(yīng)該包含任何HTML。你可以測試一下如果頁面包含HTML將
8、會發(fā)生什么?! pen方法的第一個參數(shù)(見上面表格中的Open函數(shù))指示當前操作為一個GET操作或是POST操作。在進行簡單的數(shù)據(jù)檢索時,一般使用GET。當向外傳輸?shù)臄?shù)據(jù)包大于512字節(jié)且操作包括服務(wù)器端活動(如插入,更新等)時,一般使用Post。接下來,我們看一下"url"參數(shù)。這個參數(shù)可以是一個完整的url也可以是一個相對url。在上面例子中,使用的是相對的url。"asyncFlag"參數(shù)指示在執(zhí)行send方法后是否立即處理到來的腳本(這意味著不必等待是否有響