我正在使用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
有人看过这样的东西吗?
最佳答案
简单的答案,您不应该重复使用xmlhttprequest对象(即使您没有意识到自己是因为您是Java语言的完整菜鸟)。
这行:
xmlhttp = new XMLHttpRequest();
应该:
var xmlhttp = new XMLHttpRequest();