隨著Ajax技術的出現、盛行,本被忽視認為是二流程式設計語言的JavaScript指令碼也開始了新的盛行,大量的JavaScript架構的出現如Microsoft Asp.Net Ajax、jQuery等。Ajax已經成為這些指令碼架構必不可少的組成部分了,而且Ajax的開發也越來越簡單化。
Ajax是一種已不是載入指令碼,其最古老的實現方式是利用iframe來載入遠端指令碼利用top.Function來調用父表單的方法。利用a等HTML的target屬性來指定。簡單但是後期維護複雜化了並且在跨越方面很麻煩。接著就XMLHttpRequest對象的出現,一定程度的簡化了Ajax的開發,但是在不同的瀏覽器中實現有很多大不同,FireFox中XMLHttpRequest和IE中的ActiveObject等方式,以及它僅提供了很少和簡單的Ajax請求和處理。在現在出現了很多的JavaScript架構,在基於XMLHttpRequest的封裝和類庫的提供,極大的簡化了我們的Ajax編程。其中最為出名和盛行的jQuery架構。這裡需說出的是jQuery很好實現了跨域問題。
下面我就說幾點自己目前想到的Ajax注意或者技巧,思維也許有點亂,請諒解,將的不好,也請原諒。
1:Ajax中的X是XML,它也可以很方便的載入XML,但是我個人覺得架子啊XML是個很不好的方式。首先大家都知道XML是一種嚴格的資料存放區方式,有很多冗餘資訊。再則XML的處理也有一定的複雜性。XML能實現跨平台性,如WebService,這是WebService的優點,但是也是一個致命的缺點,它基於的XML冗餘資訊,所以在分布式中速度也是很慢的。
相比而言Json對象是一個輕量級的儲存方式,它是以名值對的形式儲存。而且JavaScript指令碼本身就是一個天然的Json對象,無需轉化,可以直接使用,並且現在.NET架構中提供了對Json序列化的支援.我個人觀點是首選Json。
2:在伺服器端為了效能等的考慮經常會有緩衝,以及瀏覽器的緩衝。有時我們需要避免,最簡單的方式是加上一個時間戳記,"Default.aspx?time=” + DateTime.Now。就可以避免緩衝。如果你用的是Jquery的Ajax那可以直接設定cache:false禁用緩衝。
3:在Ajax編程需要注意的是Content-Type,有HTML、Text、Json、XML、Script等方式。我們很多的無故的錯誤經常就在這裡的設定。需要注意Ajax的Content-Type,以及服務端輸出的Content-Type。還有就是伺服器端,我們要輸出前的Response.Clear(),Response.ContentType=Type,以及完成時的Response.Flush()和Response.Clos()。
4:Ajax並不是高互動、高使用者體驗的代表,這需要說明。我們的應用不該首選Ajax技術,因為如果Ajax技術用的不是很好,那反而會適得其反。還有就是如果要用Ajax,那我們就必須為客戶準備退路,因為ajax請求很可以由於各種原因而出錯。
5:Ajax必究是基於用戶端指令碼,這就意味在存在一定的安全隱患,很容易暴露我們的某些敏感資訊。特別是網上的指令碼代碼糜爛,我們有些人經常會在網上Copy下來僅僅測試下就加入了我們的項目,我覺得這是一個很不好的習慣。很容易得不償失。
時間已晚,就說這麼多吧,如果你還有什麼心得或建議請留言。如果你有不懂的疑問也可以留言,我會儘力和儘快回複。