隨著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下來僅僅測試下就加入了我們的項目,我覺得這是一個很不好的習慣。很容易得不償失。
時間已晚,就說這麼多吧,如果你還有什麼心得或建議請留言。如果你有不懂的疑問也可以留言,我會盡力和盡快回復。