Ajax在信息系統中的應用研究
當前位置:點晴教程→知識管理交流
→『 技術文檔交流 』
[b]關鍵字:ajax、javascript、xmlhttprequest、異步交互、xml[br][/b] [br][color=#ff6600][b]一、緒論[/b][/color]
由于系統開發成本低、時間短,在過去的幾年里,c/s結構一直是信息系統開發采用的主要模式。但隨著企業規模的日益擴大,應用程序復雜程度不斷提高,傳統的c/s結構的系統暴露出越來越多的問題:系統客戶端日趨龐大而顯得“臃腫”,同時服務器負擔日益加重。而且c/s系統的布署、遷移和維護的成本很高,使企業信息系統的總擁有成本大為提高。 隨著web技術發展,b/s結構越來越受到系統開發商的青睞。與c/s結構比較,b/s結構具有系統維護方便、支持廣泛、跨平臺的優點,所以b/s三層結構大有取代c/s兩層結構之趨勢。 雖然很多開發商開始傾向于開發b/s結構的系統,但b/s結構也存在自身弱點,即b/s結構采用的html語言表現能力和交互能力太弱,除了文本輸入框、選擇框、按鈕之外,幾乎就沒有其他的任何控件了。b/s結構的這個特點讓那些曾經使用c/s系統的用戶難以適應,所以目前c/s仍然無法被b/s完全替代。因此如果能夠結合c/s和b/s兩種模式的特點,在信息系統開發中引入一個混合型模式似乎更能滿足企業和用戶的要求。 b/s結構的系統與用戶之間是一個同步交互的過程。在客戶端,用戶通過瀏覽器(browser)進行操作,向服務器發送一個http請求;服務器(server)端接收到用戶的請求后,執行相應的操作,然后向客戶端的用戶返回響應結果,即一個html頁面。這個過程是一種不連貫的用戶體驗,即在服務器處理用戶請求的時候,用戶大多數時間都處于等待的狀態,瀏覽器上大多是一片空白。 當服務器負載比較小時,該種交互過程并無不妥。可是當服務器負載較大時,服務器響應用戶的請求時間可能會大于1分鐘甚至幾分鐘,這樣長時間的等待服務器響應對于用戶來說是難以接受的。甚至有時候用戶長時間等待的卻是服務器返回的一個服務超時的錯誤消息。另一方面,某些時候用戶只是想改變頁面中一小部分的數據,而在傳統的b/s模式中實現時,瀏覽器仍然需要重新加載整個頁面的數據。目前,軟件設計越來越講究人性化,上述不友好的用戶體驗與人性化的原則背道而馳。如果能夠減少用戶等待服務器響應的時間,就可以提高用戶體驗。目前,除了程序設計、編碼優化和服務器調優等措施可以縮短用戶的等待時間之外,還可以采用ajax技術。隨著gmail、google-maps的推出,ajax正逐漸吸引全世界開發者的目光。 在2005年的2月,jesse james garrett發表了一篇 《ajax: a new approach to web applications》的文章,在該篇文章中ajax概念第一次被提出來(asynchronous javascript and xml,異步javascript和xml),之后,關于ajax技術的研究鋪天蓋地蔓延開來。盡管目前該技術還不是很完善,但是它已被大多數開發者認為是目前開發b/s系統客戶端的最好的解決方案之一,而現在已經涌現出大量基于ajax的應用系統。 在ajax技術的研發方面,google當仁不讓是表率。gmail、google groups、google maps、google suggest都應用了ajax技術。在javaone 2006上,google發布了google web toolkit(簡稱gwt),它是一個基于java的ajax應用開發框架,可以用java開發前端應用并將其轉換為使用ajax實現的javascript/html應用。業界正在猜測google下一步即將推出基于ajax技術的網絡辦公套件,屆時,用戶只需打開瀏覽器,就可以使用像微軟的諸如word、excel、powerpoint之類office工具了。 作為google的對手,微軟也在積極開發更為完善的ajax應用:它即將正式推出代號為atlas的ajax工具。atlas的功能超越了ajax本身,包括整合visual studio的調試功能。另外,新的asp.net控件將使客戶端控件與服務器端代碼的捆綁更為簡便。atlas客戶腳本框架(atlas client script framework)也使與網頁及相關項目的交互更為便利。 基于ajax的開發框架,國內外開發了許多優秀的商業和開源的產品。 1. bindows bindows 是一個處于web應用程序中表示層的“胖客戶”圖形用戶界面工具,擁有與現代桌面應用程序相同的外觀、感覺和事件。是一個輕量級的b/s應用程序開發框架。該框架已經將javascript的oop和基于ie6.0的dhtml發揮到極點, 其中javascript用于客戶端界面的顯示和處理,xmlhttp用于客戶端與服務器的信息傳輸。bindows提供了一個封裝好的可以直接利用的js類庫,使得開發過程變得十分快捷。web系統原有的界面交互性差、頁面刷新等問題都可以很好地解決。 然而bindows并非完美,它封裝了太多的原本html就提供的控件、事件和方法,使得類庫過于龐大并且內部藕合性太強,而一次性加載類庫也導致了bindows窗口初始化的時間過長。同時,bindows大量運用了ie6.0的技術,限制了bindows進行跨瀏覽器和跨平臺的運用。 2. dorado dorado是由上海銳道信息技術有限公司開發的一套基于j2ee的web開發框架構件,它的前身是extra。該開發平臺是一款用于快速開發rich-client的web開發平臺,它由一個框架和眾多的基礎構件組成。dorado構件開發平臺解決了長期困擾軟件開發人員的關于web表現層開發的兩大難題:快速開發和實現復雜交互界面,充分滿足用戶體驗。dorado在web頁面上實現了大部分c/s系統中的控件,不過當前版本不支持ie以外的其他瀏覽器。 其他還有如dwr(direct web remoting)、ajaxanywhere、ajax-jsf framework 等許多優秀的ajax開發框架。 [color=#ff6600][b]二、ajax概述[/b][/color] ajax(asynchronous javascript and xml,異步javascript和xml),不是一門新的語言或技術,它實際上是幾項技術按一定的方式組合在一起,在共同的協作中發揮各自的作用。這些技術包括javascript、xhtml、css、dom、xml、xstl及xmlhttprequest,在ajax中,各種技術各司其職: 使用xhtml和css進行數據的標準化呈現;使用dom實現動態顯示和交互;使用xml和xstl進行數據交換與處理;使用xmlhttprequest對象進行異步數據讀取;使用javascript綁定和處理所有數據; [img]http://lurenjia.net/tech/images/ajax1.jpg[/img] 圖2.1 傳統模式(左)與ajax模式(右)體系結構 在ajax提出之前,對于上述技術都只是單獨使用,或是小范圍地組合使用,沒有真正意義上綜合應用。 ajax的工作原理相當于在用戶和服務器之間加了一個中間層,稱為ajax引擎,該引擎使用戶操作與服務器響應異步化。在這種模式下,用戶請求不是全部都提交給服務器,部分請求,如一些數據驗證和簡單的數據處理請求等就交給ajax引擎完成,只有那些確實需要由服務器來完成的請求,才由ajax引擎代為向服務器提交,ajax模式與傳統模式體系結構的區別如圖2.1所示。 在傳統的交互方式中,由用戶觸發一個http請求到服務器,服務器對其進行處理后再返回一個新的html頁面給客戶端。每當服務器處理客戶端提交的請求時,用戶都只能空閑等待,并且哪怕只是一次很小的交互,只需從服務器端得到很簡單的一個數據,服務器都要返回一個完整的html頁作為響應結果,而用戶每次都要浪費時間和帶寬去重新讀取整個頁面。使用ajax之后用戶感覺所有的操作幾乎都會很快得到響應,不用等待頁面重載(白屏),就像使用桌面客戶端程序一樣的效果。兩種交互方式區別如圖2.2所示。 [img]http://lurenjia.net/tech/images/ajax2.jpg[/img] 圖2.2 傳統模式下同步交互(上)和ajax模式下異步交互(下)比較 [b]2.1 ajax引擎[/b] ajax引擎有狹義和廣義之分,廣義的ajax引擎,包括了狹義的ajax引擎和一些由javascript寫成的業務邏輯模塊。而狹義的ajax引擎,只是一些與xmlhttprequest相關,用來與完成與服務器交互的模塊,本節所闡述的是狹義的ajax引擎。 狹義的ajax引擎的主要功能包括:捕獲瀏覽器事件,初始化xmlhttprequest對象,向服務器發送請求,接收服務器響應,更新客戶端頁面內容。這也正是ajax程序與服務器交互的過程。從這個過程可以看出ajax實質上也是遵循request/response模式,只不過這個過程是異步的。 1. 捕獲瀏覽器事件 當瀏覽器中的文檔或它的某些元素發生了某些事情時,web瀏覽器就產生一個事件(event)。例如,瀏覽器裝載完一個文檔,就產生了一個onload事件;鼠標點擊層,就產生了一個onclick事件;鍵盤按一個鍵,就會產生一個keydown事件。要捕獲瀏覽器的事件,就是為某個事件注冊一個處理函數。如,,這里就為一個表單按鈕注冊了一個鼠標單擊的處理函數uploadphoto(),當鼠標單擊這個按鈕時,就會執行uploadphoto()這個函數。 2. 初始化xmlhttprequest對象 在捕獲了用戶的交互事件之后,如果需要與服務器交互,就要使用xmlhttprequest。但是,瀏覽器不同或者版本不同,這個xmlhttprequest的實例化過程實現方式也不同。ie以activex控件的形式提供,而mozilla等瀏覽器則以xmlhttprequest類的形式提供,所以需要保證程序兼容性,實現跨瀏覽器運行。 3. 向服務器發送請求 在得到一個實例化了的xmlhttprequest對象之后,就可以向服務器發送一個http的請求了。在發送之前需要指定響應處理函數,即服務器響應之后的回調函數(callback),將xmlhttprequest對象的onreadystatechange屬性指定為回調函數。名即可,比如: xmlhttprequestobject.onreadystatechange = callbackhandler。 指定響應處理函數之后,調用xmlhttprequest對象的open和send方法后,就向服務器發送了一個http的請求了。 4. 接收服務器響應 在發送http請求之前通過onreadystatechange屬性指定了響應處理函數。這個響應處理函數要做的第一步,它需要檢查xmlhttprequest對象的readystate值,判斷請求目前的狀態。當readystate值為4的時,表示服務器已經傳回所有的信息。服務器返回信息后,還需要判斷返回的http狀態碼,以確定返回的頁面沒有錯誤。所有的狀態碼都可以在w3c的官方網站上查到。其中,200代表頁面正常。接下來就可以對返回的數據進行處理了。 5. 更新客戶端頁面內容 xmlhttprequest對成功返回的信息有兩種處理方式: [br] responsetext:將傳回的信息當字符串使用。一些狀態信息等非結構化的數據,如刪除成功之之類的可以用這種方式處理; responsexml:將傳回的信息當xml文檔使用,用dom解析處理。一些結構化的數據,如20條學生的記錄,要填入到一個表格中,可以使用該方式。 [b]2.2 ajax 相關技術[/b] 1. xmlhttprequest ajax最大的特點是無需刷新頁面便可向服務器傳輸或讀寫數據,即無刷新更新頁面,這一特點主要得益于xmlhttp組件xmlhttprequest對象。這樣就可以像桌面應用程序一樣,只同服務器進行數據層面的交換,而不用每次都刷新界面,也不用每次將數據處理的工作提交給服務器來做,這樣即減輕了服務器的負擔又加快了響應速度,縮短了用戶等候時間。 2. javascript javascript是一種基于對象和事件驅動具有較高安全性能的基于客戶端瀏覽器的腳本語言。使用javascript的目的是與html超文本標識語言、css一起在網頁上實現與網絡用戶更加復雜的交互,從而適合開發客戶端的應用程序。它通過在標準的html語言中嵌入或調入實現功能。 簡單地說,javascript是一種基于對象的、簡單的、安全的、跨平臺的腳本語言。所以,javascript最大的特點在于能夠在客戶端瀏覽器運行,可以充分利用客戶端的運算能力,來減輕服務器負載和網絡的流量。 3. dom(document object model) dom(document object model,文檔對象模型)是w3c組織的推薦標準,用于操作 html 和 xml 文件使用的一組api。它提供了文件的樹狀結構表述,讓你可以改變其中的內容及表現方式,其本質是建立網頁與腳本或程序語言溝通的橋梁。[br] 一個用html或xhtml構建的網頁可以看作是一組結構化的數據,這些數據被封在dom中,dom提供了網頁中各個對象的讀寫支持。[br] ajax引擎捕獲用戶交互事件如鼠標點擊、下拉滾動條等,并相應地更改dom,這使網頁能無縫化重構,也就是在頁面已經下載完畢后改變頁面內容,從而響應用戶的請求。 4. xml(extensible markup language) xml是具有一種開放的、可擴展的、可自描述的語言結構,它已經成為網上數據和文檔傳輸的標準。它是用來描述數據結構的一種語言,正如它的名字一樣,它使對某些結構化數據的定義更加容易,并且可以通過它和其它應用程序交換數據。 目前,xml已經成為最普遍的數據操縱和數據傳輸的方式。在基于ajax技術的b/s中,大部分結構化的數據就是通過xml的來傳輸和交換的。但是并不是所有的數據都適合以xml格式來傳輸,因為數據量大到一定程度的時候,將數據序列化成xml以及解析這些xml將變得非常困難,需要消耗巨大的系統資源以及時間。另外,有些信息根本沒有必要序列化成xml,比如返回一個刪除成功的消息。[br][br][color=#ff6600][b]三、基于ajax的信息系統設計與實現[/b][/color] 為了與傳統的b/s結構的信息系統進行對比,在研究過程中,本文在研究過程中開發了一個基于ajax的信息系統。系統以學生成績管理為核心,實現一些日常教務的網絡化管理。 系統數據庫采用sql server 2000數據庫,java環境采用jdk 1.5.0_05版,應用服務器使用tomcat 5.5。系統總體上分為3層:數據層、中間層、客戶層。系統體系結構如圖3.1所示。 [img]http://lurenjia.net/tech/images/ajax3.jpg[/img] 圖3.1 系統體系結構圖 系統中間層使用hibernate作為持久層,負責java對象與數據庫表之間映射;使用javabean完成服務器端的數據處理,利用dom4j實現java對象的序列化以及解析從客戶端接收到的xml數據流;在中間層的最上面,使用java servlet來負責響應來自瀏覽器的請求并把數據處理的結果返回給瀏覽器。 在系統的客戶層,負責與服務器交互的是ajax引擎;下面的javascript就負責數據處理和響應瀏覽器事件。dom負責讀取和更新html文檔,而html、css則負責數據的表現。而在傳統的b/s應用中,客戶端的表現層往往只有最下面的html、css,或只有少量的javascript來做諸如數據驗證之類的事,以至于客戶端僅僅用來表現而已,它的交互能力太弱,需要大量的刷新。 系統所有功能模塊中的交互如添加、刪除、修改等,均不需要刷新頁面,這與傳統模式的b/s系統有著明顯的區別。從系統界面上看,它象一個用delphi或是vb編寫的c/s系統 ,但實際上它是用html編寫的在瀏覽器中運行的b/s系統。在開發過程中,本系統實現了如auto-complete、treeview、datagrid等無刷新的數據控件,與asp.net或jsf中已經存在的類似控件相比,本系統的控件在響應交互時,不需要刷新。系統運行效果如圖3.2所示。 [img]http://lurenjia.net/tech/images/ajax4.jpg[/img] 圖3.2 系統運行效果 以下結合系統自動完成控件(auto-complete),說明在ajax模式下客戶端與服務器交互的實際過程。 自動完成功能是一個為用戶提供提示的功能,可以減少用戶的輸入量,從而提高用戶體驗。在學生查找姓名框中只要輸入一個姓,如輸入“張”;系統就會自動把數據庫中所有姓“張”的學生全部找出來,供用戶選擇,用戶只要用鼠標點擊或使用方向鍵即可完成輸入。使用效果如圖3.3所示。 當用戶輸入“張”時,系統捕獲到輸入框的一個keyup事件,調用事先為keyup事件注冊的javascript函數,生成一個xml字符流: [br] 這個字符流通過sendxml()函數發送給服務器端studentservlet,servlet接收到xml數據流后使用dom4j解析,得到action節點的值為getautolist,然后調用studentbean中的getautolist方法,查找所有姓張的學生用戶,序列化成xml流后再由servlet返回給客戶端。返回給客戶端的也是xml數據流: [img]http://lurenjia.net/tech/images/ajax5.jpg[/img] 圖3.3 自動完成功能中客戶端與服務器交互的過程 在這里,由于返回的是一組結構化的數據,使用responsexml,將傳回的數據流轉化為xml文檔,用dom解析之后,將學生信息添加到自動完成的提示層中,達到圖中效果,這樣就完成了整個交互過程。系統中其他模塊實現過程也類似。 [color=#ff6600][b]四、ajax模式與傳統模式的b/s系統的對比分析[/b][/color] 為了體現ajax相對于傳統b/s模式的優勢,將基于ajax技術的b/s系統和基于傳統b/s模式的相同功能的系統進行對比。 [b]4.1 服務器負荷對比[/b] 進行服務器負荷的對比時使用的監測工具是p6spy和sql profiler。p6spy和sql profiler通過記錄系統數據庫操作相關信息,如查詢(query)、statement對象、結果集(resultset)以及查詢的流量等,來間接反應服務器的負荷。很明顯,上訴指標與服務器負荷是成正比的,指標值越大,也就意味著服務器負荷越高。 分別在傳統b/s模式系統和ajax模式系統下,大約每隔5秒添加一條學生信息,一共添加10條。sql profiler監測結果如圖4.1所示。 [img]http://lurenjia.net/tech/images/ajax6.jpg[/img] [img]http://lurenjia.net/tech/images/ajax7.jpg[/img] 圖4.1傳統b/s模式(左)和ajax(右)系統下,sql profiler監測結果 圖中縱坐標表示指標值,橫坐標表示時間,單位毫秒,其中折線圖表示queries、statements、result set、select statements這些指標的值隨時間推移發生的變化。下半部分圖縱坐標表示流量,單位byte,橫坐標表示時間,單位毫秒。 通過對比,很容易看出,由于傳統模式下提交表單之后,頁面需要刷新,故除了執行insert語句插入記錄之外,還需要執行select語句,以重新生成頁面,這就增加了服務器的處理量。而使用了ajax之后,由于頁面沒有刷新(也沒有必要刷新),系統將新增學生的信息以xml流在后臺傳給服務器,服務器只進行一次insert操作,將操作成功信息傳給客戶端,客戶端通過dom直接在頁面上添加新增學生信息。 從兩個圖對比可以看出,使用ajax之后可以減少一半以上的服務器開銷,而且隨著并發訪問量的增加,這個差距將進一步擴大。當并發訪問量大于某一闋值,傳統模式的b/s系統的服務器有可能因為大規模訪問而死機,但是相同條件下,使用ajax技術的系統卻可以運行良好。 [b]4.2 網絡流量對比[/b] 通過使用netlimiter,監測ie瀏覽器的流量,對兩種模式系統中完成同樣操作的網絡流量進行對比。 系統啟動之后,在兩個系統中,分別添加10條學生信息。得到監測結果分別如圖4.2所示。圖中左邊是流量的具體數據,右上方的圖是發送數據流量隨時間變化的圖示,右下方的圖是接受到的數據流量隨時間變化的圖示。 [img]http://lurenjia.net/tech/images/ajax8.jpg[/img] [img]http://lurenjia.net/tech/images/ajax9.jpg[/img] 圖4.2傳統b/s模式(左)和ajax(右)系統下,netlimiter監測結果 流量監測的對比結果似乎更加明顯,使用ajax技術的系統只是在一開始系統載入時,流量比較大,因為它要載入大量的js類庫,但是在之后添加10條記錄的過程中,每次發送的數據量都在1kb左右,而接收到的流量小得甚至無法直接從圖中看到。但是沒有使用ajax技術的系統,第一次載入和之后的每次添加,接收和發送的數據量都差不多,兩者相加之和每次都在100kb以上。整個過程的流量之和分別為1,248,510byte(傳統模式下)和299,435byte(ajax模式下),前者居然是后者的4.1倍。換句話說,使用ajax之后大約可以降低76%的網絡流量。而且隨著添加記錄的數量的增加,流量差距進一步拉大。如表4.1所示。 表4.1 同樣的操作兩個系統流量比較結果 添加10條記錄 添加20條記錄 添加30條記錄 傳統模式 1,248,510byte 2,195,370 byte 3,268,735 byte ajax模式 299,435byte 326,150 byte 360,530 byte 倍數 4.1倍 6.7倍 9.0倍 [b]4.3 結果分析[/b] 不管是服務器負荷的測試,還是網絡流量的測試,除去測試的誤差和偶然因素,基于 ajax技術的b/s系統相比于傳統的b/s模式的系統具有以下優勢。 1. 減輕服務器的負擔和網絡流量 在前兩節與傳統b/s模式系統進行服務器負荷和網絡流量的對比中,這點體現的淋漓盡致。ajax的原則是“按需取數據”,可以最大程度地減少冗余請求,減少響應對服務器造成的負擔。ajax根據實際需要向服務器端發送請求,用什么就取什么、用多少就取多少,就不會有數據的冗余和浪費,減少了數據下載總量,而且更新頁面時不用重載全部內容,只更新需要更新的那部分,既縮短了用戶等待時間,也減少了資源的浪費。還可以把服務器負荷轉嫁到客戶端,利于客戶端閑置的處理能力來處理,如表單驗證、客戶端數據網格排序、生成圖表等。 2. 帶來更好的用戶體驗 ajax使用xmlhttprequest對象發送請求并得到服務器響應,在不重新載入整個頁面的情況下用javascript操作dom最終更新頁面。所以在讀取數據的過程中,用戶所面對的不是白屏,是原來的頁面內容(也可以加一個loading的提示框讓用戶知道處于讀取數據過程),只有當數據接收完畢之后才更新相應部分的內容。這種更新瞬間完成,用戶幾乎感覺不到,這種體驗是十分美妙的。在本系統中,利用css,模仿了c/s應用程序的菜單、面板等,讓用戶擁有更好的使用體驗,感覺就像在使用一個c/s程序一樣。 3. 進一步促進頁面呈現和數據的分離 在b/s模式的系統中,頁面呈現和數據本身沒有清晰的界限,數據和數據表現的格式混雜在一起,而基于 ajax技術的b/s系統采用xml作為數據的載體,數據通過dom解析之后表現出來,能夠做到數據與數據表現的徹底分離,有利于分工合作、減少頁面的修改引起的web應用程序錯誤,提高效率、更加適用目前的系統要求。 4. 降低系統維護成本 c/s結構的系統在部署時,系統支持工程師需要為每個用戶安裝客戶端,在系統日常運行時,支持工程師也需要在現場進行維護和更新。對于系統開發商來說,c/s結構的系統部署和維護成本相對較高;而經常性的進行本地系統維護和升級給用戶也帶來很大的不便。 相對而言,基于ajax技術的系統,系統開發商要做的就是讓工程師在服務器端完成系統的調試、部署、維護、更新,基本上無須在用戶操作現場實施。這就很大程度上地降低了系統的后期維護成本,而用戶也不必擔心程序是否會發生錯誤,只需打開瀏覽器即可。 目前,ajax雖然得到廣大廠商和開發者的追捧,但它還只是一個新生事物,并不是十分完美成熟的技術,所以還是存在一定的不足。 1. 程序兼容性問題 ajax大量使用了javascript和xmlhttprequest,它們需要瀏覽器的支持,但是只有ie5.0及以上版本、mozilla1.0、netscape7及以上版本的瀏覽器才完全支持javascript和xmlhttprequest。mozilla雖然也支持xmlhttprequest,但是在mozilla中xmlhttprequest的使用方式有所不同,需要在開發過程中,注意保證程序的兼容性。除此之外,有時候,相同javascript和css的效果在不同的瀏覽器中也存在一些差異。 另外,一些手持移動設備(如手機、pda等)目前還不能很好的支持ajax。 本系統中,由于需要實現某些效果,使用了一些ie瀏覽器的特性,使得系統在firefox等其他瀏覽器中一些功能無法正常使用,沒有很好的做到跨瀏覽器。 2. 部分瀏覽器功能失效 ajax更新頁面內容的時候并沒有刷新整個頁面,因此,網頁的后退功能是失效的。同樣,瀏覽器的“添加到收藏夾”功能也是無法正常使用,添加到收藏夾的url通常不能跳轉到當時的狀態。為了解決這些問題,一些ajax的程序往往屏蔽了瀏覽器的這些功能按鈕和快捷鍵。 在本系統中,使用了ie瀏覽器支持的showmodaldialog方法打開應用程序,隱藏了瀏覽器的工具欄和菜單,從而避免用戶使用后退、刷新等功能。遺憾的是,在其他瀏覽器中,并不支持showmodaldialog方法。 目前,ajax受到了全世界開發者的熱切關注,基于ajax技術的b/s系統也漸漸在實際應用中變得越來越多。相信在不久的將來,隨著不同瀏覽器之間兼容性的不斷提高,ajax將會成為信息系統開發領域中主要的開發模式。 本文在研究過程中,對ajax技術進行了初步嘗試,一些問題沒有很好的解決,如瀏覽器的兼容性問題,為了實現一些效果,運用了一些ie6.0瀏覽器才支持的特性,以致于在firefox等其他瀏覽器,或者ie的早期版本中,一些功能無法正常使用。這需要在今后的開發中,繼續改進。 該文章在 2010/6/3 1:43:14 編輯過 |
關鍵字查詢
相關文章
正在查詢... |