Ajax并不是新的技術(shù),而是之前技術(shù)的整合,其中包括Javascript、HTML、CSS、DOM、XMLHttpRequest、XML和JSON是構(gòu)成Ajax技術(shù)體系技術(shù)基石。
Javascript:Javascript是一種弱類型、解釋性的、通用的腳本語(yǔ)言,在Ajax技術(shù)體系中,它將各個(gè)部分粘合在一起。Javascript定義業(yè)務(wù)邏輯、操作DOM改變和刷新用戶界面、重繪或重組織用戶數(shù)據(jù)、處理用戶交互等。
HTML:HTML定義了文檔的結(jié)構(gòu),定義了元素之間的包含關(guān)系,也定義了文檔中可以應(yīng)用樣式的位置。
CSS:CSS為Web頁(yè)面元素提供了一種可重用的、可視化樣式的定義方法來(lái)定義應(yīng)用的外觀。樣式表提供了集中定義各種視覺(jué)央視的方法并方便地設(shè)置到頁(yè)面元素上。樣式表可定義樣式元素、定義元素相互之間的布局以及簡(jiǎn)單的用戶交互功能以實(shí)現(xiàn)視覺(jué)效果。
DOM:DOM組織網(wǎng)頁(yè)視圖,以一組可以使用Javascript操作的可編程對(duì)象展現(xiàn)出Web頁(yè)面的結(jié)構(gòu)。通過(guò)使用腳本修改DOM在運(yùn)行時(shí)改變用戶界面,或重繪頁(yè)面的某個(gè)部分。Web頁(yè)面的DOM是樹(shù)狀結(jié)構(gòu),Javascript引擎通過(guò)全局變量document公開(kāi)當(dāng)前Web頁(yè)面的根節(jié)點(diǎn),這個(gè)變量是所有DOM操作的起點(diǎn)。DOM文檔與HTML表單的關(guān)系是雙向的,修改DOM將會(huì)改變HTML標(biāo)記。
XMLHttpRequest:使用XMLHttpRequest以異步的方式與服務(wù)器通信。它以后臺(tái)方式獲取數(shù)據(jù),是的發(fā)生異步調(diào)用的業(yè)務(wù)更加流暢。數(shù)據(jù)格式通常是XML(目前來(lái)看,使用JSON作為數(shù)據(jù)格式會(huì)更加方便,在本書(shū)后面的章節(jié)會(huì)詳細(xì)介紹JSON,但是目前為大家介紹的是AJAX)。
XML和JSON:XML,可擴(kuò)展標(biāo)記語(yǔ)言,標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言的子集,是一種用于標(biāo)記電子文件使其具有結(jié)構(gòu)性的標(biāo)記語(yǔ)言。通過(guò)此種標(biāo)記,計(jì)算機(jī)之間可以處理各種信息。他可以用來(lái)標(biāo)記數(shù)據(jù)、定義數(shù)據(jù)類型,是一種允許用戶對(duì)自己的標(biāo)記語(yǔ)言進(jìn)行定義的源語(yǔ)言,它非常適合萬(wàn)維網(wǎng)傳輸,提供統(tǒng)一的方法來(lái)描述和交換獨(dú)立與應(yīng)用程序或供應(yīng)商的結(jié)構(gòu)化數(shù)據(jù)。
但是XML文件相對(duì)龐大,格式復(fù)雜,傳輸占用大量的帶寬,而且服務(wù)器端和客戶端都需要花費(fèi)大量代碼來(lái)解析XML,使兩端的代碼變得復(fù)雜并不容易維護(hù),并且不同的瀏覽器解析XML文件的方式也不盡相同,需要重復(fù)編寫很多代碼。而且服務(wù)器端和客戶端解析XML也需要花費(fèi)大量的資源和時(shí)間。
那么除了使用XML作為數(shù)據(jù)交換格式,現(xiàn)在還可以使用一種叫做JSON(JavascriptObjectNotation)的輕量級(jí)數(shù)據(jù)交換格式,并且JSON已經(jīng)成為了主流(現(xiàn)在AJAX似乎更適合叫做AJAJ,AsynchronousJavascriptAndJSON)。
JSON數(shù)據(jù)格式比較簡(jiǎn)單,易于讀寫,格式都是壓縮的,占用帶寬較小。JSON格式能夠直接為服務(wù)端和客戶端代碼使用,大大簡(jiǎn)化了服務(wù)端和客戶端的代碼開(kāi)發(fā)量,且易于維護(hù)。