English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

我知道這題可能沒有人回答.. 算了, 習慣了, 沒人答就路過的大大隨便答吧~ >_<

我正在開發 Ajax 的 JavaScript 程式, 測試時, 發現重大的問題~

IE 7.0 同時建立兩個新的 XMLHttpRequest 物件, 並且下載檔案, 都能順利取回.

而同樣的程式, Mozilla FireFox 2.0 建立兩個新的 XMLHttpRequest 物件, 同一瞬間, 新的卻把舊的給取代掉了, 也就是說一次只能下載一個檔案, 這樣根本是嚴重的問題, 變成一個要等一個, Queue 在那裡了 >_< 拖垮整體運作效能... 未免也太遜了吧~

不知道有沒有哪位大大寫過這方面程式, 麻煩幫我測一下看看, 是不是會遇到跟我一樣的情形.. 不知有無辦法克服?... >_<

我確認的項目如下:

1. 確實建立了兩個 "新的" 物件, 此部份測試ok

2. 我是用 onreadystatechange 事件, 同時進行.

3. 我利用 FireFox 的錯誤主控台, 任何錯誤訊息均能確認清楚, 也打開 IE 的完整錯誤訊息, 因此兩方比較, 並利用 alert() 來雙確認, 避免誤判.

4. 測試的兩個檔案均為不到 1kb 的 XML 檔案, 這也是實際要用到的資料大小, 就是這麼小的檔案所以更是在一秒鐘之內就兩個都取回了.


~感謝~


註: 詳細版本編號

IE 7.0.5730.11 英文版

Mozilla FireFox 2.0.0.1 繁體中文版

2006-12-23 15:44:04 · 2 個解答 · 發問者 志國 7 in 電腦與網際網路 程式設計

感謝--流浪玩家--大大熱心寫 code 協助測試^_^

2006-12-24 17:38:58 · update #1

感謝--蚯蚓--大大也來參與^_^ 事情是醬的,下一個會把前一個給取代掉,所以您提的方法也一樣結果.

2006-12-27 16:47:47 · update #2

2 個解答

不是兩個 request 嗎?
改成這樣不就好了?

window.onload=function(){
req=(window.ActiveXObject)?new ActiveXObject("MSXML2.XMLHTTP"):new XMLHttpRequest();
req.open("GET","test_1.txt");
req.onreadystatechange=function(){
if(req.readyState==4){
document.getElementById('ajax_1').innerHTML=req.responseText;
}
}
req.send(null);
//
req2=(window.ActiveXObject)?new ActiveXObject("MSXML2.XMLHTTP"):new XMLHttpRequest();
req2.open("GET","test_2.txt");
req2.onreadystatechange=function(){
if(req2.readyState==4){
document.getElementById('ajax_2').innerHTML=req2.responseText;
}
}
req2.send(null);
}

2006-12-28 23:43:41 補充:
改成兩個 request, 結果如預期:
http://211.20.181.250/~happyman/ajex.html
IE6, firefox 1.5, 2.0 都是正確的耶!

有沒有 code 跟實際應用?
google maps 拼地圖感覺應該不會很慢吧?

2006-12-27 16:18:33 · answer #1 · answered by Chiu 4 · 0 0

這個可能是瀏覽器的標準問題,
以下列的程式為例:







test_1.txt的內容:123
test_2.txt的內容:456
ie呈現:
123
456
FireFox呈現:
456
Opera呈現:
456
456
可能要請您將這個問題回報給FireFox,
也許FireFox官方會有很好的建議。

2006-12-28 09:23:37 補充:
因為可以設定兩個變數,
var req,req_2;
這樣子就可以,
不過這應該也不是您所想要的結果,
您的作法就如同我所說的不同的瀏覽器會有不同結果,
可以試著將兩個request傳回的結果合為一個,
也就是將test_1.txt與test_2.txt合併。

2006-12-25 08:44:51 · answer #2 · answered by 流浪玩家 6 · 0 0

fedest.com, questions and answers