Ajax并不神秘:揭下各種Ajax控件和類庫(kù)的小褲衩
更新時(shí)間:2007年03月13日 00:00:00 作者:
Ajax控件和類庫(kù)現(xiàn)在真的太多了,不知不覺中增加了Ajax的神秘性和復(fù)雜性,看到版內(nèi)很多人為此費(fèi)解和傷神,決定發(fā)此貼談?wù)劚救藢?duì)Ajax的觀點(diǎn),希望能讓大家對(duì)Ajax有一個(gè)本質(zhì)的認(rèn)識(shí)。
觀點(diǎn)一:Ajax和服務(wù)器端技術(shù)毫不相關(guān)
嚴(yán)格的說,與傳統(tǒng)web開發(fā)相比,Ajax是完完全全的客戶端技術(shù)。由于很多控件封裝了客戶端和服務(wù)器端的通信過程,因此很多問題也因通信而起。事實(shí)上,不論何種Ajax技術(shù),服務(wù)器端都是返回的一個(gè)純文本流,再由客戶端來處理這個(gè)文本。這段文本可以是xml格式,也可以是一個(gè)Html片段,也可以是一段JavaScript腳本,或者僅是一個(gè)字符串。服務(wù)器端僅僅是作為一個(gè)數(shù)據(jù)接口,客戶端使用XMLHttpRequest對(duì)象來請(qǐng)求這個(gè)頁(yè)面,服務(wù)器端在頁(yè)面內(nèi)寫入結(jié)果文本,這個(gè)過程和普通的web開發(fā)沒有任何區(qū)別。所不同的只是,客戶端在異步獲取結(jié)果后,不是直接顯示在頁(yè)面,而是由客戶端的Javascript腳本處理后再顯示在頁(yè)面。至于各種控件所謂的能返回DataSet對(duì)象,Date對(duì)象,或者其他的數(shù)據(jù)類型,都是封裝了這個(gè)處理過程的結(jié)果。
觀點(diǎn)二:DOM模型是Ajax最本質(zhì)的技術(shù)
之所以沒有把XMLHttpRequest列為最本質(zhì)的技術(shù),因?yàn)楸救擞X得它實(shí)在是太簡(jiǎn)單了,它只是可以讓瀏覽器在后臺(tái)請(qǐng)求一個(gè)頁(yè)面,并將其內(nèi)容交給JavaScript處理。真正的核心應(yīng)該是:DOM模型,即文檔對(duì)象模型。在DOM模型里,Html標(biāo)記都被認(rèn)為是一個(gè)對(duì)象,例如:div對(duì)象,table對(duì)象等等。DOM模型就規(guī)定了這些對(duì)象所具有的屬性、方法和事件。通過這些性質(zhì),可以對(duì)一個(gè)已經(jīng)顯示于瀏覽器的頁(yè)面進(jìn)行內(nèi)容的修改,例如增加節(jié)點(diǎn)、修改節(jié)點(diǎn)位置,刪除節(jié)點(diǎn)等等。而不僅僅是一個(gè)innerHTML屬性這么簡(jiǎn)單,雖然這是一個(gè)很有用的屬性。
觀點(diǎn)三:在使用Ajax控件前理解它們的實(shí)現(xiàn)
使用Ajax控件的確可以提高效率,但如果你空中樓閣般使用控件,那就得不償失了。從一個(gè)控件換到另外一個(gè)控件又會(huì)有一個(gè)漫長(zhǎng)的學(xué)習(xí)曲線。所以應(yīng)該從底層了解,況且Ajax實(shí)在不是什么高深的技術(shù)。其實(shí)任何東西的最底層其實(shí)都是簡(jiǎn)單的,但如果封裝了這些底層的東西,事情會(huì)變得復(fù)雜和難以理解。以Asp.net為例,它的定制特性可以使得只要在方法前加上[ajax method]類似這樣的標(biāo)志就可以稱為一個(gè)異步方法,相信這使得Asp.net的Ajax開發(fā)顯得更加“高效”或者是“神秘”,而更多的事情則被封裝了。同樣記住一條,任何對(duì)服務(wù)器端的請(qǐng)求僅僅是返回純文本,我們不一定要依賴于封裝好的處理過程,而完全可以自己來實(shí)現(xiàn)。
觀點(diǎn)四:學(xué)好JavaScript
在大多數(shù)人看來,JavaScript總不是那么一種正規(guī)的語言,隨便copy一段就碰巧能運(yùn)行,學(xué)過c之類的人,一看也能看懂,而且在瀏覽器中常常有腳本錯(cuò)誤提示,所以潛意識(shí)覺得總不能付之以大任。事實(shí)上,要學(xué)好Ajax,這就完全是一種錯(cuò)誤的看法。javascript作為一種腳本語言,其語法的確不是很嚴(yán)格,但并不妨礙其完成諸多復(fù)雜的任務(wù),沒有JavaScript,就沒有Ajax。所以本人強(qiáng)烈建議,學(xué)Ajax前,一定要好好研究一番JavaScript,一般來講,如果能順利看懂prototype框架的代碼(如:prototype-1.3.1.js),你的JavaScript水平就基本過關(guān)了。同時(shí)對(duì)DOM模型也可以算有一個(gè)基本的了解。
觀點(diǎn)五:Ajax點(diǎn)綴:CSS
用JavaScript控制CSS其實(shí)很簡(jiǎn)單,基本上每個(gè)DOM對(duì)象都有一個(gè)style對(duì)象,只要把css屬性里的”-”去掉,并讓隨后的字母變?yōu)榇髮懢涂梢宰鳛閷傩允褂昧?,例如:element.style.backgroundColor=”#f00″;在css是:選擇符 {background-color:#f00}
一口氣說這么多,希望對(duì)大家有點(diǎn)用處^_^
觀點(diǎn)一:Ajax和服務(wù)器端技術(shù)毫不相關(guān)
嚴(yán)格的說,與傳統(tǒng)web開發(fā)相比,Ajax是完完全全的客戶端技術(shù)。由于很多控件封裝了客戶端和服務(wù)器端的通信過程,因此很多問題也因通信而起。事實(shí)上,不論何種Ajax技術(shù),服務(wù)器端都是返回的一個(gè)純文本流,再由客戶端來處理這個(gè)文本。這段文本可以是xml格式,也可以是一個(gè)Html片段,也可以是一段JavaScript腳本,或者僅是一個(gè)字符串。服務(wù)器端僅僅是作為一個(gè)數(shù)據(jù)接口,客戶端使用XMLHttpRequest對(duì)象來請(qǐng)求這個(gè)頁(yè)面,服務(wù)器端在頁(yè)面內(nèi)寫入結(jié)果文本,這個(gè)過程和普通的web開發(fā)沒有任何區(qū)別。所不同的只是,客戶端在異步獲取結(jié)果后,不是直接顯示在頁(yè)面,而是由客戶端的Javascript腳本處理后再顯示在頁(yè)面。至于各種控件所謂的能返回DataSet對(duì)象,Date對(duì)象,或者其他的數(shù)據(jù)類型,都是封裝了這個(gè)處理過程的結(jié)果。
觀點(diǎn)二:DOM模型是Ajax最本質(zhì)的技術(shù)
之所以沒有把XMLHttpRequest列為最本質(zhì)的技術(shù),因?yàn)楸救擞X得它實(shí)在是太簡(jiǎn)單了,它只是可以讓瀏覽器在后臺(tái)請(qǐng)求一個(gè)頁(yè)面,并將其內(nèi)容交給JavaScript處理。真正的核心應(yīng)該是:DOM模型,即文檔對(duì)象模型。在DOM模型里,Html標(biāo)記都被認(rèn)為是一個(gè)對(duì)象,例如:div對(duì)象,table對(duì)象等等。DOM模型就規(guī)定了這些對(duì)象所具有的屬性、方法和事件。通過這些性質(zhì),可以對(duì)一個(gè)已經(jīng)顯示于瀏覽器的頁(yè)面進(jìn)行內(nèi)容的修改,例如增加節(jié)點(diǎn)、修改節(jié)點(diǎn)位置,刪除節(jié)點(diǎn)等等。而不僅僅是一個(gè)innerHTML屬性這么簡(jiǎn)單,雖然這是一個(gè)很有用的屬性。
觀點(diǎn)三:在使用Ajax控件前理解它們的實(shí)現(xiàn)
使用Ajax控件的確可以提高效率,但如果你空中樓閣般使用控件,那就得不償失了。從一個(gè)控件換到另外一個(gè)控件又會(huì)有一個(gè)漫長(zhǎng)的學(xué)習(xí)曲線。所以應(yīng)該從底層了解,況且Ajax實(shí)在不是什么高深的技術(shù)。其實(shí)任何東西的最底層其實(shí)都是簡(jiǎn)單的,但如果封裝了這些底層的東西,事情會(huì)變得復(fù)雜和難以理解。以Asp.net為例,它的定制特性可以使得只要在方法前加上[ajax method]類似這樣的標(biāo)志就可以稱為一個(gè)異步方法,相信這使得Asp.net的Ajax開發(fā)顯得更加“高效”或者是“神秘”,而更多的事情則被封裝了。同樣記住一條,任何對(duì)服務(wù)器端的請(qǐng)求僅僅是返回純文本,我們不一定要依賴于封裝好的處理過程,而完全可以自己來實(shí)現(xiàn)。
觀點(diǎn)四:學(xué)好JavaScript
在大多數(shù)人看來,JavaScript總不是那么一種正規(guī)的語言,隨便copy一段就碰巧能運(yùn)行,學(xué)過c之類的人,一看也能看懂,而且在瀏覽器中常常有腳本錯(cuò)誤提示,所以潛意識(shí)覺得總不能付之以大任。事實(shí)上,要學(xué)好Ajax,這就完全是一種錯(cuò)誤的看法。javascript作為一種腳本語言,其語法的確不是很嚴(yán)格,但并不妨礙其完成諸多復(fù)雜的任務(wù),沒有JavaScript,就沒有Ajax。所以本人強(qiáng)烈建議,學(xué)Ajax前,一定要好好研究一番JavaScript,一般來講,如果能順利看懂prototype框架的代碼(如:prototype-1.3.1.js),你的JavaScript水平就基本過關(guān)了。同時(shí)對(duì)DOM模型也可以算有一個(gè)基本的了解。
觀點(diǎn)五:Ajax點(diǎn)綴:CSS
用JavaScript控制CSS其實(shí)很簡(jiǎn)單,基本上每個(gè)DOM對(duì)象都有一個(gè)style對(duì)象,只要把css屬性里的”-”去掉,并讓隨后的字母變?yōu)榇髮懢涂梢宰鳛閷傩允褂昧?,例如:element.style.backgroundColor=”#f00″;在css是:選擇符 {background-color:#f00}
一口氣說這么多,希望對(duì)大家有點(diǎn)用處^_^
相關(guān)文章
基于HTML5 Ajax文件上傳進(jìn)度條如何實(shí)現(xiàn)(jquery版本)
本文給大家介紹基于html5 ajax文件上傳進(jìn)度條是如何實(shí)現(xiàn)的,涉及到html5新增加的formdata對(duì)象的使用,對(duì)html5文件上傳進(jìn)度條感興趣的朋友一起學(xué)習(xí)吧2015-11-11AJAX請(qǐng)求數(shù)據(jù)及實(shí)現(xiàn)跨域的三種方法詳解
ajax跨域這個(gè)問題其實(shí)很常見,這篇文章主要給大家介紹了關(guān)于AJAX請(qǐng)求數(shù)據(jù)及實(shí)現(xiàn)跨域的三種方法的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2021-12-12ajax獲取數(shù)據(jù)中文亂碼問題最簡(jiǎn)單的完美解決方案
這篇文章主要介紹了ajax獲取數(shù)據(jù)中文亂碼問題最簡(jiǎn)單的完美解決方案,需要的朋友可以參考下2014-11-11AJAX和JSP實(shí)現(xiàn)的基于WEB的文件上傳的進(jìn)度控制代碼
AJAX和JSP實(shí)現(xiàn)的基于WEB的文件上傳的進(jìn)度控制代碼...2007-05-05html+js+php一次原始的Ajax請(qǐng)求示例
雖然jquery的ajax要比原始的寫法容易得多,我們還是應(yīng)該了解原始的寫法,下面有個(gè)不錯(cuò)的示例,大家可以參考下2014-04-04關(guān)于ajax的使用方法_例題、ajax的數(shù)據(jù)處理
下面小編就為大家?guī)硪黄P(guān)于ajax的使用方法_例題、ajax的數(shù)據(jù)處理。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05簡(jiǎn)單實(shí)現(xiàn)ajax三級(jí)聯(lián)動(dòng)效果
這篇文章主要教大家簡(jiǎn)單實(shí)現(xiàn)ajax三級(jí)聯(lián)動(dòng)效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10