學習Ajax中遇到的一些問題(總結問題是爲了儘量不再犯同樣的錯誤)

1.不夠仔細,由於JavaScript太靈活了,而且在jsp中直接寫js有很多錯誤都是檢測不到的,所以在寫的時候一定要仔細,有時候出現的一些莫名其妙的錯誤常常是寫方法或者變量的時候出現了拼寫錯誤,或者是少傳了參數。


2.獲取responseText時遇到的的亂碼問題。
問題現狀:使用post方法時,沒有什麼問題(因爲是照着老師的敲得);如果改爲get,則就全是亂碼了....(有待折騰)

3.如果想要獲得更新的數據,則必須先做好一個準備,也就是將response設這爲無緩存,

[quote]
response.setHeader("Cache-Control", "no-cache");
[/quote]

這樣的話,response中就不會預留一塊區域來存儲收到的數據。如果沒有先設置好response的話,當頁面獲取更新的數據時,不但每次取到的都是第一次更新的數據,而且甚至連負責更新的服務器都不會被訪問到。我猜測原因或許是因爲頁面在發送請求之前會先訪問response中的緩存,如果存在數據的話就直接取數據,並且不會發送請求了。

4.函數在順序上有時候也會出錯。例如這裏:
[quote]

var timeflag;
function stopMsg()
{
clearTimeout([color=red]timeflag[/color]);
}

function sendRequest(url,ElementID){
getRequest();
request.onreadystatechange = function(){rcevMsg(ElementID);};
request.open("get",url,true);
request.send(null);
[color=red]timeflag[/color] = setTimeout("sendRequest ('"+url+"','"+ElementID+"')",2000);
}
[/quote]
可以看到timeflag是在sendRequest()中被賦值的,即便是在具體操作中,sendRequest()先被調用(這裏指的是頁面內的調用),stopMsg()後被調用,還是沒有辦法執行到stopMsg()中的內容。

5.關於頁面切換時遇到的問題就比較糾結了...之所以糾結,是因爲問題不是出自於我本身。最初當我發送請求百度和谷歌的頁面時,就是獲得不到,糾結了兩天晚上,以爲是哪裏寫錯了,後來直接copy老師的代碼了,結果還是不行...後來換成自己寫的頁面,就好了...囧...可能是IE9的問題吧,具體的我也不是太清楚,所以說,不要總是找自己的錯誤~因爲有時候出現問題了,錯誤了並不是你自己.

6.不要用IE9來做練習,絕對不要~
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章