Ajax應用需要注意的事項
接觸Ajax,那時候的Ajax支持還不是很好,都要涉及底層,沒有現(xiàn)成的框架給你調(diào)用。現(xiàn)在把常見的問題列舉如下。
1、編碼問題
注意AJAX要取的文件是UTF-8編碼的。GB2312編碼傳回BROWSE后中文會亂碼。如果用VBScript的話還可以轉化,但是VBScript只有IE支持。
所以,選擇UTF-8編碼是一勞永逸的辦法。
2、清除服務器端文件的緩存。
當用XMLHTTP取回一個服務器端的文件,文件會緩存在瀏覽器端。下次再取文件時,不會再去服務器取文件。所以,對于刷新頻繁的文件,一定要指定文件的過期時間。
3、什么時候使用XML
Ajax里的X指的就是XML,可是真的XML就是最好的解決方案嗎?XML和JSON相比,在傳遞同等量的信息時,XML文件更大。所以往往JSON是更好的選擇。不過,你還可以直接輸出Javascript執(zhí)行,這樣的效率往往更高:不需要寫復雜的回調(diào)函數(shù)。不過安全問題也要更加注意。
4、兩種Ajax的方式
一些人的基礎可能還不是很扎實,并不非常了解Ajax的原理,那你知道Ajax由哪兩種方式來實現(xiàn)嗎?
最古老的一種是iframe來加載一個包含js的網(wǎng)頁,這個網(wǎng)頁里的腳本用 top.function來調(diào)用parent頁面里的函數(shù)。但是,你可以指定a的target和form的target,這樣就不用序列化表單,實際上能很方便地發(fā)送表單。當然后期就稍微有點麻煩,出現(xiàn)問題也不容易解決。
后來就是xmlhttp組件的方式。什么時候挑選什么方式,這也是一種技巧。
5、跨域問題
如果一個腳本不在同一個域,兩者就不能相互調(diào)用。如果iframe里是其他域的網(wǎng)頁,就不能訪問parent頁的具體內(nèi)容。如果需要訪問遠程的XML,比如RSS FEED,建議可以用服務器端腳本來中轉。在訪問量不是非常大的情況下還是很很好的一個解決辦法。不過,翻閱JQuery手冊發(fā)現(xiàn)它能調(diào)用(執(zhí)行)跨域的腳本,具體怎么做的還不是很清楚。大家可以下載JQUERY未加密的版本來研究下。
6、安全問題
在服務器端,雖然客戶端能預處理很多東西,你仍要注意一句話:一切來自客戶端的變量都是有害的。不在Ajax的情況下很多程序員往往會放松警惕。這使得安全問題更隱蔽。如果是開源程序的話那么問題就會在網(wǎng)友面前馬上暴露出來;黑盒的情況下,往往被入侵了還是找不出原因。
結語:實際上在這個框架橫行的年代直接編寫Ajax實現(xiàn)代碼的機會并不多,很多JS框架都集成了AJAX調(diào)用函數(shù),一些服務器端的框架,例如THINKPHP也集成了AJAX。但是,理解一些底層的東西,還是有利于排除BUG,提高AJAX應用的性能的。
【編輯推薦】