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