2010-02-21 31 views
0

我正在使用HTML + Javascript製作一個小型Adobe AIR應用程序(我的第一個應用程序)。我需要運行多個異步數據請求,但第二個似乎並未解僱(請注意,這些請求並非最初同時運行)。我試圖將程序剝離到最低限度,但最初只有第一個請求被解僱,但事情變得很奇怪。代碼和輸出如下:Adob​​e AIR和多個XMLHttpRequests正在......怪異

<html> 
<head> 
    <script type="text/javascript" src="AIRAliases.js"></script> 
    <script type="text/javascript">   
     function download(page) { 
      var url = "http://en.wikipedia.org/w/api.php?action=parse&format=xml&page=" + page; 
      xmlhttp = new XMLHttpRequest(); 
      xmlhttp.open("GET", url,true); 
      xmlhttp.onreadystatechange=function(){ 
       if (xmlhttp.readyState == 4) { 
        air.trace("Done"); 
       } 
      } 
      xmlhttp.send(null); 
     } 

     function appLoad() { 
      download("Main Page"); 
      download("Main Page"); 
     } 
    </script> 
</head> 
<body onLoad="appLoad()"> 
</body> 
</html> 

預期輸出:

Done 
Done 

實際輸出:

C:\AIRSDK\apps\HelloWorld>adl HelloWorld-app.xml 
Done 
C:\AIRSDK\apps\HelloWorld>adl HelloWorld-app.xml 
Done 
C:\AIRSDK\apps\HelloWorld>adl HelloWorld-app.xml 
Done 
C:\AIRSDK\apps\HelloWorld>adl HelloWorld-app.xml 
Done 
Done 
Done 
Done 
Done 
Done 
Done 

沒有人見過這樣的事?

+0

對不起挖了一箇舊線,但我試圖做一個非同步的XMLHttpRequest,但沒有得到responseText和responseXML的在我readystatechange功能。它只被調用一次,狀態設置爲0,readystate爲4.在你的代碼中,它表示已完成,但在哪裏以及如何存儲頁面的內容?這裏是示例代碼:http://stackoverflow.com/questions/14155112/unable-to-get-response-status-from-adobe-air-xmlhttprequest – HMR 2013-01-04 13:16:48

+0

請注意,在Windows上使用IE瀏覽器,所以當我的IE設置爲離線工作我有奇怪的事情發生與請求。有些沒問題,因爲他們在緩存中,有些會失敗。 – HMR 2013-01-05 11:21:44

回答

2

簡單的答案是,你不應該重新使用xmlhttprequest對象(即使你沒有意識到你是因爲你是一個Javascript的完整noob)。

這條線:

  xmlhttp = new XMLHttpRequest(); 

應該是:

  var xmlhttp = new XMLHttpRequest();