2010-02-21 1 views
0

Я создаю небольшое приложение Adobe AIR (мое первое), используя HTML + Javascript. Мне нужно запустить более одного асинхронного запроса данных, но второй, похоже, не стрелял (обратите внимание, что запросы не запускались одновременно изначально). Я попытался скрыть программу до минимума, которая показала проблемы, и сначала только первый запрос был запущен, но потом все стало странным. Код и вывод следующим образом:Adobe AIR и несколько XMLHttpRequests ... weird

<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, и readistate of 4. В вашем коде сказано, но где и как вы храните содержимое страницы? Вот пример кода: http://stackoverflow.com/questions/14155112/unable-to-get-response-status-from-adobe-air-xmlhttprequest – HMR

+0

Обратите внимание, что в Windows AIR используется IE, поэтому, когда мой IE был настроен на работа в автономном режиме. У меня были странные вещи с запросом. Некоторые из них были в порядке, поскольку они были в кеше, а некоторые потерпели неудачу. – HMR

ответ

2

Простой ответ: вы не должны повторно использовать объекты xmlhttprequest (даже если вы не понимаете, что это потому, что вы полный Noob в Javascript).

Эта линия:

  xmlhttp = new XMLHttpRequest(); 

Должна быть:

  var xmlhttp = new XMLHttpRequest();