刷新網(wǎng)頁——等待......——刷新網(wǎng)頁——等待......
當(dāng)您在使用瀏覽器瀏覽網(wǎng)頁的時(shí)候,您是否經(jīng)常遇到上面的情況?當(dāng)您面對空白而緩慢展現(xiàn)的屏幕時(shí),您是否感到痛苦甚至憤怒?
現(xiàn)在,有一種越來越流行越熱的“老”技術(shù),可以改變這種窘迫的局面。那就是Ajax。如今,隨著Gmail、Google-maps的應(yīng)用和各種瀏覽器的支持,Ajax正逐漸吸引全世界的眼球。
1.Ajax技術(shù)簡介
AJAX(AsynchronousJavaScriptandXML,即異步JavaScript+XML),其實(shí)是多種技術(shù)的綜合。正如Ajax的命名者JesseJamesGarrett所指出的:
Ajax不是一項(xiàng)技術(shù)。它其實(shí)是幾項(xiàng)技術(shù),每項(xiàng)技術(shù)自身都很繁榮,它們以強(qiáng)有力的全新方式結(jié)合起來。
Ajax主要涵蓋以下幾方面的技術(shù):
--運(yùn)用XHTML和CSS實(shí)現(xiàn)基于各種標(biāo)準(zhǔn)的展示。
--運(yùn)用文檔對象模型(DocumentObjectModel)實(shí)現(xiàn)動態(tài)顯示和交互。
--運(yùn)用XML和XSLT實(shí)現(xiàn)數(shù)據(jù)交換和操作。
--運(yùn)用XMLHttpRequet實(shí)現(xiàn)異步數(shù)據(jù)檢索。
--JavaScript將所有這些綁定到一起。
與傳統(tǒng)的Web應(yīng)用不同,Ajax采用異步交互過程。Ajax在用戶與服務(wù)器之間引入一個(gè)中間媒介,從而消除了網(wǎng)絡(luò)交互過程中的處理—等待—處理—等待缺點(diǎn)。用戶的瀏覽器在執(zhí)行任務(wù)時(shí)即裝載了Ajax引擎。Ajax引擎用JavaScript語言編寫,通常藏在一個(gè)隱藏的框架中。它負(fù)責(zé)編譯用戶界面及與服務(wù)器之間的交互。Ajax引擎允許用戶與應(yīng)用軟件之間的交互過程異步進(jìn)行,獨(dú)立于用戶與網(wǎng)絡(luò)服務(wù)器間的交流。AJAX的原則是“按需取數(shù)據(jù)”,使用Ajax可以最大程度的減少冗余請求,和響應(yīng)對服務(wù)器造成的負(fù)擔(dān)。
圖傳統(tǒng)web模型和Ajaxweb模型比較
2.Ajax技術(shù)與ERP
當(dāng)前主流的ERP采取的是B/S架構(gòu),在ERP的實(shí)際應(yīng)用中,也存在許多傳統(tǒng)Web開發(fā)方式無法解決的問題。雖然Ajax技術(shù)有待進(jìn)一步完善和成熟,但是在ERP開發(fā)中適當(dāng)?shù)匮芯亢鸵階jax開發(fā)思想和技術(shù),解決傳統(tǒng)方法難以應(yīng)付的問題,無疑對開發(fā)人員和客戶都是有益的。
下面就Ajax技術(shù)在ERP中可能的應(yīng)用場景進(jìn)行簡單的討論。
(1)數(shù)據(jù)驗(yàn)證
在進(jìn)行表單內(nèi)容的填寫和更新時(shí),有的時(shí)候需要將更新的數(shù)據(jù)到數(shù)據(jù)庫中進(jìn)行一下數(shù)據(jù)驗(yàn)證。傳統(tǒng)的數(shù)據(jù)驗(yàn)證通常有兩種方式:一種是直接填寫,然后提交表單,這種方式需要將這個(gè)頁面提交到服務(wù)器端進(jìn)行驗(yàn)證,整個(gè)過程不僅時(shí)間長而且造成了服務(wù)器不必要的負(fù)擔(dān);第二種方式是改進(jìn)了的驗(yàn)證過程,用戶可以通過點(diǎn)擊相應(yīng)的驗(yàn)證按鈕,打開新窗口查看驗(yàn)證結(jié)果,但是這樣需要新開一個(gè)瀏覽器窗口或者對話框,還需要專門編寫驗(yàn)證的頁面,比較耗費(fèi)系統(tǒng)資源。而使用Ajax技術(shù),可以由XMLHttpRequet對象發(fā)出驗(yàn)證請求,根據(jù)返回的HTTP響應(yīng)判斷驗(yàn)證是否成功,整個(gè)過程不需要彈出新窗口,也不需要將整個(gè)頁面提交到服務(wù)器,快速而又不加重服務(wù)器負(fù)擔(dān)。
(2)樹形結(jié)構(gòu)
分類樹或者樹形結(jié)構(gòu)在ERP系統(tǒng)中使用得非常廣泛。應(yīng)用Ajax技術(shù)可以改進(jìn)分類樹的實(shí)現(xiàn)機(jī)制。在初始化頁面時(shí),只獲取第一級子分類的數(shù)據(jù)并且顯示;當(dāng)用戶點(diǎn)開一級分類的第一節(jié)點(diǎn)時(shí),頁面會通過Ajax向服務(wù)器請求當(dāng)前分類所屬的二級子分類的所有數(shù)據(jù);如果再請求已經(jīng)呈現(xiàn)的二級分類的某一節(jié)點(diǎn)時(shí),再次向服務(wù)器請求當(dāng)前分類所屬的三級子分類的所有數(shù)據(jù),以此類推。頁面會根據(jù)用戶的操作向服務(wù)器請求它所需要的數(shù)據(jù),這樣就不會存在數(shù)據(jù)的冗余,減少了數(shù)據(jù)下載總量。同時(shí),更新頁面時(shí)不需要重載所有內(nèi)容,只更新需要更新的那部分內(nèi)容即可,相對于以前后臺處理并且重載的方式,大大縮短了用戶的等待時(shí)間。
(3)數(shù)據(jù)自動更新
Ajax出現(xiàn)之前,用戶為了即使了解相應(yīng)的內(nèi)容必須不斷刷新頁面,查看是否有新的內(nèi)容變化,或者頁面本身實(shí)現(xiàn)定時(shí)刷新的功能。有可能會發(fā)生這種情況;有一段時(shí)間網(wǎng)頁的內(nèi)容沒有發(fā)生任何變化,但是用戶并不知道,仍然不斷的刷新頁面;或者用戶失去了耐心,放棄了刷新頁面,卻很有可能在此有新的消息出現(xiàn),這樣就錯(cuò)過了第一時(shí)間得到消息的機(jī)會。
應(yīng)用Ajax可以改善這種情況,頁面加載以后,會通過Ajax引擎在后臺進(jìn)行定時(shí)的輪詢,向服務(wù)器發(fā)送請求,查看是否有最新的消息。如果有則將新的數(shù)據(jù)(而不是所有數(shù)據(jù))下載并且在頁面上進(jìn)行動態(tài)的更新,通過一定的方式通知用戶(實(shí)現(xiàn)這樣的功能正是JavaScript的強(qiáng)項(xiàng))。這樣即避免了用戶不斷手工刷新頁面的不便,也不會因?yàn)橹貜?fù)刷新頁面造成資源浪費(fèi)。
需要注意的是,雖然Ajax已經(jīng)獲得廣泛的支持,但實(shí)際的開發(fā)中,還是要注意跨瀏覽器的問題,這主要是在JavaScript編程部分。不過許多流行的框架封裝了這些細(xì)節(jié)部分,可以解決這一問題。另外一方面,如果用戶還在大量使用比較早期的瀏覽器版本,Ajax技術(shù)可能就無法奏效,在實(shí)施的時(shí)候這一點(diǎn)值得注意。
Ajax為Web應(yīng)用開發(fā)提供了新的機(jī)會,也為ERP系統(tǒng)提出了新的要求。當(dāng)因?yàn)锳jax技術(shù)而使得用戶感受到全新體驗(yàn)的時(shí)候,贏家不會僅僅是用戶。
轉(zhuǎn)載請注明出處:拓步ERP資訊網(wǎng)http://www.ezxoed.cn/
本文標(biāo)題:淺談Ajax技術(shù)與ERP
本文網(wǎng)址:http://www.ezxoed.cn/html/support/1112153410.html