從剛剛接觸B/S開(kāi)發(fā),就耳聞AJAX技術(shù),但一直處于模棱兩可的狀態(tài),大道理明白,一到動(dòng)手就傻眼了。
AJAX仿佛就是深不可測(cè)的技術(shù),成為B/S學(xué)習(xí)過(guò)程中的一個(gè)陰影。
直到前些日子,小菜才真正開(kāi)始AJAX實(shí)踐,真正動(dòng)手了才發(fā)現(xiàn),AJAX并沒(méi)有那么困難,如果不考慮AJAX的變型應(yīng)用,只考慮AJAX基本應(yīng)用,它還是相當(dāng)簡(jiǎn)單的,過(guò)于復(fù)雜的理論阻礙了我們動(dòng)手的積極性。
因此,本系列教程將從實(shí)用的角度出發(fā),以最快的速度讓讀者掌握基本的AJAX應(yīng)用,以最直接的方式展示AJAX技術(shù)。
為了更好的閱讀本系列教程,對(duì)讀者有如下要求:
l 熟悉HTML。
l 熟悉HTTP協(xié)議。
l 熟悉javascript。
l 熟悉XML。
l 熟悉XML DOM。
AJAX并不是一項(xiàng)新技術(shù),它只是一個(gè)新標(biāo)準(zhǔn)。根據(jù)小菜個(gè)人理解,所謂AJAX技術(shù),即為了實(shí)現(xiàn)客戶端和服務(wù)器的后臺(tái)交互,以xml作為信息載體,利用javascript進(jìn)行控制,通過(guò)HTTP協(xié)議進(jìn)行交互,達(dá)到html界面部分刷新的效果。
下面小談一下這些技術(shù)。
HTML沒(méi)啥好說(shuō)的。
HTTP協(xié)議內(nèi)容就比較多了。在AJAX實(shí)踐中,會(huì)涉及到POST、GET方法請(qǐng)求數(shù)據(jù)、HTTP頭部信息的構(gòu)造、數(shù)據(jù)的解析格式等,主要就是這三項(xiàng),看看哪個(gè)不熟悉,趕緊補(bǔ)習(xí)吧!不過(guò)都很簡(jiǎn)單,不要有壓力。
小菜覺(jué)得AJAX就是在寫(xiě)Javascript腳本,javascript負(fù)責(zé)聲明一個(gè)至關(guān)重要的XMLHttpRequest對(duì)象,這個(gè)對(duì)象通過(guò)POST或GET方法向服務(wù)器發(fā)送請(qǐng)求,取得xml的格式的返回?cái)?shù)據(jù),再把xml解析,展示在界面上,這就是AJAX執(zhí)行過(guò)程。
xml無(wú)非就是一種數(shù)據(jù)規(guī)范,它可以使數(shù)據(jù)具有一定結(jié)構(gòu),這樣一來(lái),方便了數(shù)據(jù)組織,又方便了數(shù)據(jù)擴(kuò)展。
xml的基本組成是元素,也就是HTML中常說(shuō)的標(biāo)簽,例如:book>/book>;而元素和元素又可以嵌套,例如:book>name>/name>/book>。同時(shí),元素又可以擁有屬性,例如:book>name data=”一千零一夜”>/name>/book>。
這樣一來(lái),xml就可以表示非常豐富、靈活的信息,甚至可以當(dāng)成小型數(shù)據(jù)庫(kù)來(lái)用。
在此,小提一下,建議用子元素的方法來(lái)擴(kuò)展元素,例如:book>name>/name>/book>,不建議用屬性的方式擴(kuò)展元素,例如:book name=””>/book>,因?yàn)樽釉乇葘傩愿屿`活,也符合x(chóng)ml的設(shè)計(jì)思想。
想要用Javascript操作xml,必須了解基本的DOM(Document Object Model)知識(shí)。為了方便讀者學(xué)習(xí),小菜簡(jiǎn)單介紹一下XML DOM。
根據(jù)DOM定義,xml中每個(gè)成分都是一個(gè)節(jié)點(diǎn)。根據(jù)小菜的理解,成分的含義就是xml的組成部分。
具體如下:
l 整個(gè)文檔是一個(gè)文檔節(jié)點(diǎn)。
l 每個(gè)xml標(biāo)簽是一個(gè)元素節(jié)點(diǎn)。例如book>/book>是一對(duì)標(biāo)簽,也叫元素節(jié)點(diǎn),又叫元素。
l 包含在xml元素中的文本是文本節(jié)點(diǎn)。例如name>一千零一夜/name>,其中“一千零一夜”就是文本節(jié)點(diǎn)。
l xml元素的屬性叫屬性節(jié)點(diǎn)。例如book serialNumber=”0905024”>/book>,其中serialNumber就是屬性節(jié)點(diǎn)。
節(jié)點(diǎn)有三個(gè)非常重要的屬性,分別為:nodeName(節(jié)點(diǎn)名稱)、nodeValue(節(jié)點(diǎn)值)、nodeType(節(jié)點(diǎn)類型)。其中nodeName和nodeValue非常常用,必須搞清楚。
對(duì)于nodeName(只讀)有:
l 元素節(jié)點(diǎn)的nodeName與該元素的標(biāo)簽名相同。例如元素book>/book>,它的nodeName就是book。
l 屬性節(jié)點(diǎn)的nodeName就是屬性名稱。例如book serialNumber=” 0905024”>/book>,屬性節(jié)點(diǎn)是serialNumber,那么它的nodeName屬性也是serialNumber。
l 文本節(jié)點(diǎn)的nodeName是固定的#text字符串。例如name>一千零一夜/name>,文本節(jié)點(diǎn)是“一千零一夜”,它的nodeName將返回”#text”這個(gè)固定字符串。
對(duì)于nodeValue(讀/寫(xiě))有:
l 元素節(jié)點(diǎn)的nodeValue返回undefind。例如book>/book>元素,它的nodeValue屬性將返回undefind。
l 屬性節(jié)點(diǎn)的nodeValue即該屬性的值。例如book serialNumber=” 0905024”>/book>,屬性節(jié)點(diǎn)是serialNumber,它的nodeValue返回0905024。
l 文本節(jié)點(diǎn)的nodeValue即文本自身內(nèi)容。例如name>一千零一夜/name>,文本節(jié)點(diǎn)是“一千零一夜”,它的nodeValue返回“一千零一夜”。這個(gè)一定要特別注意?。?!本例中name元素包含了一個(gè)“一千零一夜”文本節(jié)點(diǎn),“一千零一夜”并不是name元素的值(nodeValue)!name元素的值(nodeValue)是undefind!因此實(shí)際編程時(shí)要注意,當(dāng)獲取到name元素時(shí),還要類似firstChild、childNodes[0]這樣進(jìn)一步獲取元素中包含的文本節(jié)點(diǎn),然后才能用nodeValue屬性讀出文本內(nèi)容。
綜上,可以用一張圖概括AJAX技術(shù):
小菜精力有限,水平也有限,不可能把這些技術(shù)講的很細(xì),還需要讀者有一定基礎(chǔ),本系列文章的目的是通過(guò)小菜的實(shí)戰(zhàn)例子,讓讀者對(duì)AJAX恍然大悟,認(rèn)清AJAX本質(zhì)。
您可能感興趣的文章:- Ajax.基礎(chǔ)教程 電子書(shū)版 提供下載
- 比較簡(jiǎn)單的jquery教程 Easy Ajax with jQuery 中文版全集
- ASP ajax分頁(yè)教程一
- Ajax+PHP簡(jiǎn)單基礎(chǔ)入門實(shí)例教程
- jquery 框架使用教程 AJAX篇
- 十大最佳Ajax教程收集(圖文)
- jquery1.4 教程二 ajax方法的改進(jìn)
- 分享精心挑選的12款優(yōu)秀jQuery Ajax分頁(yè)插件和教程
- ThinkPHP中ajax使用實(shí)例教程
- ajax初級(jí)教程之獲取博文列表