新聞中心
接觸Ajax,那時(shí)候的Ajax支持還不是很好,都要涉及底層,沒(méi)有現(xiàn)成的框架給你調(diào)用?,F(xiàn)在把常見(jiàn)的問(wèn)題列舉如下。

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


咨詢
建站咨詢
