Adobe AIR和多个XMLHttpRequests正在......很奇怪

时间:2010-02-21 22:10:25

标签: javascript ajax air xmlhttprequest

我正在使用HTML + Javascript创建一个小型Adobe AIR应用程序(我的第一个)。我需要运行多个异步数据请求,但第二个请求似乎没有被触发(请注意,请求最初并不是并发运行)。我尝试将程序剥离到显示问题的最低限度,并且起初只有第一个请求被解雇,但事情变得奇怪了。代码和输出如下:

<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

之前有人见过这样的事吗?

1 个答案:

答案 0 :(得分:2)

简单回答,你不应该重复使用xmlhttprequest对象(即使你没有意识到你是因为你是Javascript的完整菜鸟)。

这一行:

            xmlhttp = new XMLHttpRequest();

应该是:

            var xmlhttp = new XMLHttpRequest();