我正在使用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
之前有人见过这样的事吗?
答案 0 :(得分:2)
简单回答,你不应该重复使用xmlhttprequest对象(即使你没有意识到你是因为你是Javascript的完整菜鸟)。
这一行:
xmlhttp = new XMLHttpRequest();
应该是:
var xmlhttp = new XMLHttpRequest();