我正在使用 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 对象(即使你没有意识到你是因为你是 Javascript 的菜鸟)。
这一行:
xmlhttp = new XMLHttpRequest();
应该是:
var xmlhttp = new XMLHttpRequest();
关于javascript - Adobe AIR 和多个 XMLHttpRequest ……很奇怪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2307649/