Ajax使用雜談 也許也是亂彈
更新時間:2010年05月14日 12:33:48 作者:
Google Suggest 和Google Map的出現(xiàn),引起了我們Web開發(fā)者的一次震動。
隨著Ajax技術(shù)的出現(xiàn)、盛行,本被忽視認為是二流編程語言的JavaScript腳本也開始了新的盛行,大量的JavaScript框架的出現(xiàn)如Microsoft Asp.Net Ajax、jQuery等。Ajax已經(jīng)成為這些腳本框架必不可少的組成部分了,而且Ajax的開發(fā)也越來越簡單化。
Ajax是一種已不是加載腳本,其最古老的實現(xiàn)方式是利用iframe來加載遠程的腳本利用top.Function來調(diào)用父窗體的方法。利用a等HTML的target屬性來指定。簡單但是后期維護復(fù)雜化了并且在跨越方面很麻煩。接著就XMLHttpRequest對象的出現(xiàn),一定程度的簡化了Ajax的開發(fā),但是在不同的瀏覽器中實現(xiàn)有很多大不同,F(xiàn)ireFox中XMLHttpRequest和IE中的ActiveObject等方式,以及它僅提供了很少和簡單的Ajax請求和處理。在現(xiàn)在出現(xiàn)了很多的JavaScript框架,在基于XMLHttpRequest的封裝和類庫的提供,極大的簡化了我們的Ajax編程。其中最為出名和盛行的jQuery框架。這里需說出的是jQuery很好實現(xiàn)了跨域問題。
下面我就說幾點自己目前想到的Ajax注意或者技巧,思維也許有點亂,請諒解,將的不好,也請原諒。
1:Ajax中的X是XML,它也可以很方便的加載XML,但是我個人覺得架子啊XML是個很不好的方式。首先大家都知道XML是一種嚴格的數(shù)據(jù)存儲方式,有很多冗余信息。再則XML的處理也有一定的復(fù)雜性。XML能實現(xiàn)跨平臺性,如WebService,這是WebService的優(yōu)點,但是也是一個致命的缺點,它基于的XML冗余信息,所以在分布式中速度也是很慢的。
相比而言Json對象是一個輕量級的存儲方式,它是以名值對的形式存儲。而且JavaScript腳本本身就是一個天然的Json對象,無需轉(zhuǎn)化,可以直接使用,并且現(xiàn)在.NET框架中提供了對Json序列化的支持.我個人觀點是首選Json。
2:在服務(wù)器端為了性能等的考慮經(jīng)常會有緩存,以及瀏覽器的緩存。有時我們需要避免,最簡單的方式是加上一個時間戳,"Default.aspx?time=” + DateTime.Now。就可以避免緩存。如果你用的是Jquery的Ajax那可以直接設(shè)置cache:false禁用緩存。
3:在Ajax編程需要注意的是Content-Type,有HTML、Text、Json、XML、Script等方式。我們很多的無故的錯誤經(jīng)常就在這里的設(shè)置。需要注意Ajax的Content-Type,以及服務(wù)端輸出的Content-Type。還有就是服務(wù)器端,我們要輸出前的Response.Clear(),Response.ContentType=Type,以及完成時的Response.Flush()和Response.Clos()。
4:Ajax并不是高交互、高用戶體驗的代表,這需要說明。我們的應(yīng)用不該首選Ajax技術(shù),因為如果Ajax技術(shù)用的不是很好,那反而會適得其反。還有就是如果要用Ajax,那我們就必須為客戶準備退路,因為ajax請求很可以由于各種原因而出錯。
5:Ajax必究是基于客戶端腳本,這就意味在存在一定的安全隱患,很容易暴露我們的某些敏感信息。特別是網(wǎng)上的腳本代碼糜爛,我們有些人經(jīng)常會在網(wǎng)上Copy下來僅僅測試下就加入了我們的項目,我覺得這是一個很不好的習(xí)慣。很容易得不償失。
時間已晚,就說這么多吧,如果你還有什么心得或建議請留言。如果你有不懂的疑問也可以留言,我會盡力和盡快回復(fù)。
Ajax是一種已不是加載腳本,其最古老的實現(xiàn)方式是利用iframe來加載遠程的腳本利用top.Function來調(diào)用父窗體的方法。利用a等HTML的target屬性來指定。簡單但是后期維護復(fù)雜化了并且在跨越方面很麻煩。接著就XMLHttpRequest對象的出現(xiàn),一定程度的簡化了Ajax的開發(fā),但是在不同的瀏覽器中實現(xiàn)有很多大不同,F(xiàn)ireFox中XMLHttpRequest和IE中的ActiveObject等方式,以及它僅提供了很少和簡單的Ajax請求和處理。在現(xiàn)在出現(xiàn)了很多的JavaScript框架,在基于XMLHttpRequest的封裝和類庫的提供,極大的簡化了我們的Ajax編程。其中最為出名和盛行的jQuery框架。這里需說出的是jQuery很好實現(xiàn)了跨域問題。
下面我就說幾點自己目前想到的Ajax注意或者技巧,思維也許有點亂,請諒解,將的不好,也請原諒。
1:Ajax中的X是XML,它也可以很方便的加載XML,但是我個人覺得架子啊XML是個很不好的方式。首先大家都知道XML是一種嚴格的數(shù)據(jù)存儲方式,有很多冗余信息。再則XML的處理也有一定的復(fù)雜性。XML能實現(xiàn)跨平臺性,如WebService,這是WebService的優(yōu)點,但是也是一個致命的缺點,它基于的XML冗余信息,所以在分布式中速度也是很慢的。
相比而言Json對象是一個輕量級的存儲方式,它是以名值對的形式存儲。而且JavaScript腳本本身就是一個天然的Json對象,無需轉(zhuǎn)化,可以直接使用,并且現(xiàn)在.NET框架中提供了對Json序列化的支持.我個人觀點是首選Json。
2:在服務(wù)器端為了性能等的考慮經(jīng)常會有緩存,以及瀏覽器的緩存。有時我們需要避免,最簡單的方式是加上一個時間戳,"Default.aspx?time=” + DateTime.Now。就可以避免緩存。如果你用的是Jquery的Ajax那可以直接設(shè)置cache:false禁用緩存。
3:在Ajax編程需要注意的是Content-Type,有HTML、Text、Json、XML、Script等方式。我們很多的無故的錯誤經(jīng)常就在這里的設(shè)置。需要注意Ajax的Content-Type,以及服務(wù)端輸出的Content-Type。還有就是服務(wù)器端,我們要輸出前的Response.Clear(),Response.ContentType=Type,以及完成時的Response.Flush()和Response.Clos()。
4:Ajax并不是高交互、高用戶體驗的代表,這需要說明。我們的應(yīng)用不該首選Ajax技術(shù),因為如果Ajax技術(shù)用的不是很好,那反而會適得其反。還有就是如果要用Ajax,那我們就必須為客戶準備退路,因為ajax請求很可以由于各種原因而出錯。
5:Ajax必究是基于客戶端腳本,這就意味在存在一定的安全隱患,很容易暴露我們的某些敏感信息。特別是網(wǎng)上的腳本代碼糜爛,我們有些人經(jīng)常會在網(wǎng)上Copy下來僅僅測試下就加入了我們的項目,我覺得這是一個很不好的習(xí)慣。很容易得不償失。
時間已晚,就說這么多吧,如果你還有什么心得或建議請留言。如果你有不懂的疑問也可以留言,我會盡力和盡快回復(fù)。
相關(guān)文章
編碼為GB2312網(wǎng)站讓AJAX接收的數(shù)據(jù)顯示支持中文
GB2312 網(wǎng)站AJAX接收的數(shù)據(jù)顯示支持中文2010-01-01Ajax+Asp源代碼]讀取數(shù)據(jù)庫內(nèi)容的表格(沒有用框架)
Ajax+Asp源代碼]讀取數(shù)據(jù)庫內(nèi)容的表格(沒有用框架)...2006-11-11js裝載xml文件然后發(fā)向服務(wù)器的實現(xiàn)代碼
js裝載xml文件然后發(fā)向服務(wù)器,具體的代碼可以參考下面的思路。2009-01-01[ASP.NET AJAX]Function對象及Type類的方法介紹
[ASP.NET AJAX]Function對象及Type類的方法介紹...2007-01-01ajax 怎么設(shè)置超時(一個action執(zhí)行了2遍)
一個action執(zhí)行了2遍 ,這個操作大致需要5分多鐘才能完成,于是搜了幾個可以設(shè)置超時的地方,希望對大家有所幫助2014-08-08解決ajax提交到后臺數(shù)據(jù)成功但返回不走success而走的error問題
今天小編就為大家分享一篇解決ajax提交到后臺數(shù)據(jù)成功但返回不走success而走的error問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08