AJAX初級(jí)教程之初識(shí)AJAX
從剛剛接觸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è)一定要特別注意?。。”纠衝ame元素包含了一個(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ì)。
相關(guān)文章
ajax傳遞一個(gè)參數(shù)具體實(shí)現(xiàn)
ajax傳遞一個(gè)參數(shù)或多個(gè)參數(shù)在使用過(guò)程中由于特殊需求經(jīng)常會(huì)用到,下面與大家分享下具體的實(shí)現(xiàn)方法,感興趣的朋友可以參考下哈2013-05-05ajax請(qǐng)求攜帶自定義請(qǐng)求頭header(跨域和同域)案例實(shí)戰(zhàn)教程
這篇文章主要介紹了ajax請(qǐng)求攜帶自定義請(qǐng)求頭header(跨域和同域)案例實(shí)戰(zhàn)教程,ajax請(qǐng)求是有同源策略的,雖然可以應(yīng)用CORS等手段來(lái)實(shí)現(xiàn)跨域,但是這并不是說(shuō)這樣就是“同源”了,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2023-10-10ajax異步讀取后臺(tái)傳遞回的下拉選項(xiàng)的值方法
今天小編就為大家分享一篇ajax異步讀取后臺(tái)傳遞回的下拉選項(xiàng)的值方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08AJAX 圖片展示框架56個(gè) 提升開(kāi)發(fā)效率
隨著Lightbox和image Gallery的廣泛應(yīng)用,目前基于異步刷新技術(shù)動(dòng)態(tài)展示圖片的框架已經(jīng)是百家爭(zhēng)鳴,在這里我收集匯總了56個(gè)比較通用的框架,與大家分享!2009-08-08基于h5的history改善ajax列表請(qǐng)求體驗(yàn)
這篇文章主要介紹了基于h5的history改善ajax列表請(qǐng)求體驗(yàn)的相關(guān)資料,需要的朋友可以參考下2015-11-11Ajax跨域問(wèn)題及解決方案(jsonp,cors)
遠(yuǎn)程服務(wù)器上設(shè)法動(dòng)態(tài)的把數(shù)據(jù)裝進(jìn)js格式的文本代碼段中,供客戶端調(diào)用和進(jìn)一步處理。這篇文章主要介紹了ajax跨域問(wèn)題解決方案(jsonp,cors) ,需要的朋友可以參考下2019-06-06ajax請(qǐng)求json數(shù)據(jù)案例詳解
最近項(xiàng)目有這樣一個(gè)需求,點(diǎn)擊六大洲,出現(xiàn)對(duì)應(yīng)的一些請(qǐng)求信息,展示在下面,當(dāng)請(qǐng)求之后,第二次點(diǎn)擊就不用再次請(qǐng)求了,究竟用代碼怎么寫(xiě)呢,下面小編帶領(lǐng)大家了解了解2015-09-09分頁(yè)技術(shù)原理與實(shí)現(xiàn)之無(wú)刷新的Ajax分頁(yè)技術(shù)(三)
這篇文章主要介紹了分頁(yè)技術(shù)原理與實(shí)現(xiàn)的第三篇:無(wú)刷新的Ajax分頁(yè)技術(shù),感興趣的小伙伴們可以參考一下2016-06-06