邢苗苗 高麗(內(nèi)蒙古商貿(mào)職業(yè)學(xué)院,內(nèi)蒙古自治區(qū)呼和浩特 010010)
ASP.NET中AJAX技術(shù)基礎(chǔ)及應(yīng)用
邢苗苗 高麗
(內(nèi)蒙古商貿(mào)職業(yè)學(xué)院,內(nèi)蒙古自治區(qū)呼和浩特 010010)
本文主要介紹AJAX概念的提出,核心組件,基本技術(shù)及技術(shù)的基本原理,ajax的特點(diǎn)是: 基于Web標(biāo)準(zhǔn),使用文檔對(duì)象模板(Document Object Model)作動(dòng)態(tài)顯示和交互;使用XML和XSLT進(jìn)行數(shù)據(jù)交換及相關(guān)操作;使XMLHTTPRequest進(jìn)行異步數(shù)據(jù)查詢(xún)和接收;使用JavaScript將所有的東西綁定在一起。能在不更新整個(gè)頁(yè)面的前提下維護(hù)數(shù)據(jù)。這使得Web應(yīng)用程序更為迅捷地回應(yīng)用戶(hù)動(dòng)作,并避免了在網(wǎng)絡(luò)上發(fā)送那些沒(méi)有改變過(guò)的信息。結(jié)合實(shí)際,簡(jiǎn)述ajax在ASP.NET中的應(yīng)用。
AJAX ASP.NET XMLHTTPRequest應(yīng)用
1.1 ajax技術(shù)的背景
在國(guó)內(nèi)通常把AJAX翻譯成“阿賈克斯”。這個(gè)專(zhuān)業(yè)術(shù)語(yǔ)所表達(dá)的一種轉(zhuǎn)換的過(guò)程,即以Web應(yīng)用為主到以數(shù)據(jù)應(yīng)用為主。在以數(shù)據(jù)應(yīng)用為主的過(guò)程中,從相對(duì)獨(dú)立的網(wǎng)頁(yè)服務(wù)端取得用戶(hù)需要的各種數(shù)據(jù),并寫(xiě)入網(wǎng)頁(yè)當(dāng)中,這樣就可以讓用戶(hù)真正的實(shí)現(xiàn)Web的應(yīng)用體驗(yàn)過(guò)程。
不可否認(rèn),ajax技術(shù)的流行很大程度得益于google的大力推廣,正是由于google earth等對(duì)ajax技術(shù)的廣泛應(yīng)用,催生了ajax的流行。但是早在97年,Ajax中涉及到的一些核心技術(shù)已經(jīng)被微軟發(fā)明出來(lái)了,當(dāng)IE5推出之際,它便開(kāi)始支持XmlHttpRequest對(duì)象,但是不得不說(shuō),即便這種關(guān)鍵技術(shù)已經(jīng)被發(fā)明了,卻沒(méi)有用預(yù)見(jiàn)性的眼光看到它的發(fā)展前景和潛力,從而將其束之高閣,沒(méi)有真正的推廣和發(fā)展起來(lái)。
1.2 ajax的核心技術(shù)及原理
Ajax的核心是JavaScript對(duì)象XmlHttpRequest。該對(duì)象在Internet Explorer 5中首次引入,它是一種支持異步請(qǐng)求的技術(shù)。簡(jiǎn)而言之,XmlHttpRequest使您可以使用JavaScript向服務(wù)器提出請(qǐng)求并處理響應(yīng),而不阻塞用戶(hù)。Ajax對(duì)服務(wù)器沒(méi)什么要求,可以為Java EE應(yīng)用程序,.NET應(yīng)用程序和其他類(lèi)型的應(yīng)用程序服務(wù)。可以通過(guò)Ajax,可以編寫(xiě)javascript代碼來(lái)改進(jìn)HTML,創(chuàng)建出豐富的交互性用戶(hù)體驗(yàn)。
AJAX實(shí)際上不是一種語(yǔ)言,甚至算不上一種技術(shù),它是幾種技術(shù)的有機(jī)結(jié)合如Javascript、XML、CSS等等,其實(shí)有時(shí)還會(huì)用到更多的技術(shù),如java。 Javascript作為腳本語(yǔ)言,用Javascript操作XML 和CSS,用XML做為數(shù)據(jù)的存儲(chǔ)介質(zhì),用CSS顯示效果和狀態(tài)使用及DOM進(jìn)行動(dòng)態(tài)顯示及交互。
不得不再次著重提一下XMLHttpRequest,就我認(rèn)為這是真正Ajax的核心,它可以模擬Request對(duì)象自行向服務(wù)器提交請(qǐng)求,并返回請(qǐng)求結(jié)果,這就摒棄了原有的需要花費(fèi)很長(zhǎng)時(shí)間等待的空白瀏覽器顯示頁(yè),用句不怎么術(shù)的術(shù)語(yǔ)說(shuō)就是“動(dòng)態(tài)無(wú)刷新”。
并且要提一下不同的瀏覽器實(shí)現(xiàn)的方式不一樣,如Mozilla,F(xiàn)irefox,Safari,和Netscape瀏覽器都是需要不同的功能實(shí)現(xiàn)。
2.1 使用ScriptManager控件調(diào)用Web服務(wù)
在AJAX程序運(yùn)轉(zhuǎn)的過(guò)程中,腳本管理的控件是其基礎(chǔ),即ScriptManager。實(shí)際上它是一種Web控件,頁(yè)面所涉及到的頁(yè)面局部或者是組件的更新都是由它來(lái)處理的,從而生成客戶(hù)端代理腳本,可以方便用戶(hù)在JavaScript中進(jìn)行Web Service的相關(guān)程序。
2.2 UpdatePanel控件實(shí)現(xiàn)局部更新
AJAX在ASP.NET中最關(guān)鍵的、最核心的技術(shù)就是局部更新。局部更新的Web應(yīng)用程序可以有多種多樣的表現(xiàn)形式,不需要整個(gè)頁(yè)面進(jìn)行刷新,可以根據(jù)客戶(hù)的需求針對(duì)某一指定的頁(yè)面進(jìn)行刷新,針對(duì)不同的、單獨(dú)的更新頁(yè)面的需求,可以用多個(gè)UpdatePanel控件來(lái)實(shí)現(xiàn)。
在UpdatePanel控件中,有兩個(gè)標(biāo)簽需要引起足夠的重視,即Triggers標(biāo)簽和ContentTemplate標(biāo)簽,其中UpdatePanel控件中的內(nèi)容部分是由ContentTemplate標(biāo)簽來(lái)決定的,任何類(lèi)型的ASP.NET控件都可以放置在這個(gè)地方,因?yàn)槠湓贑ontentTemplate標(biāo)簽的作用下,可以使頁(yè)面無(wú)刷新的更新操作得以實(shí)現(xiàn)。局部更新的觸發(fā)器主要是由Triggers標(biāo)簽來(lái)決定的,主要包括兩種觸發(fā)器的類(lèi)型,即PostBackTrigge觸發(fā)器和Async-PostBackTrigge觸發(fā)器。Async-PostBackTrigge觸發(fā)器指的是部分更新,通過(guò)ControlID來(lái)指定控制ID和EventName來(lái)指定控制事件來(lái)實(shí)現(xiàn)。當(dāng)EventName的值無(wú)法確定的時(shí)候,其會(huì)自動(dòng)的采用控件的默認(rèn)值。
[1]章立民研究室.ASP NET AJAX經(jīng)典范例168(VC#版)[M].北京:機(jī)械工業(yè)出版社,2007,8.
[2]敖麗敏,李林輝.基于AJAX的電力圖形系統(tǒng)的實(shí)現(xiàn)[J].電力系統(tǒng)自動(dòng)化,2007,31(9):47-50.
[3]作者:(美)阿斯利森.(美)舒塔.譯者:金靈,等.Ajax基礎(chǔ)教程(圖靈程序設(shè)計(jì)叢書(shū))[M].北京:人民郵電出版社,2006,2.
[4]譚力,楊宗源,謝瑾奎等.Ajax技術(shù)的數(shù)據(jù)響應(yīng)優(yōu)化[J].計(jì)算機(jī)工程,2010,36(7):52-54.
[5]陳黎夫.ASP.NET AJAX 程序設(shè)計(jì).應(yīng)用[M].北京:人民郵電出版社,2007.
[6]張躍廷,顧彥玲.ASP.NET從入門(mén)到精通[M].北京:清華大學(xué)出版社,2008,9.
[7]王麗娜,李懷,趙磊等.基于模擬用戶(hù)的 Ajax Web 自動(dòng)化測(cè)試模型[J].華中科技大學(xué)學(xué)報(bào)(自然科學(xué)版),2016,44(3):1-5.