XMLHttpRequest在for循环中

我试图在for循环内发出几个服务器请求。我发现了[\这个问题,\并实施了建议的解决方案。但是,它似乎不起作用。

    for (var i = 1; i <= 10; i++)

{

(function(i) {

if(<some conditions>)

{

if (window.XMLHttpRequest) {

// code for IE7+, Firefox, Chrome, Opera, Safari

xmlhttp[i]=new XMLHttpRequest();

} else { // code for IE6, IE5

xmlhttp[i]=new ActiveXObject("Microsoft.XMLHTTP");

}

xmlhttp[i].onreadystatechange=function() {

if (xmlhttp[i].readyState==4 && xmlhttp[i].status==200) {

document.getElementById("preselection").innerHTML=xmlhttp[i].responseText;

}

}

xmlhttp[i].open("GET","getBuoys.php?q="+i,true);

xmlhttp[i].send();

}

})(i);

}

如果我删除了for循环并将所有xmlhttp [i]更改为xmlhttp,那么对于一个元素来说一切都很好,但是我无法发出多个请求。在此先感谢您的任何建议。

回答:

尝试下面的代码段

// JavaScript

window.onload = function(){

var f = (function(){

var xhr = [], i;

for(i = 0; i < 3; i++){ //for loop

(function(i){

xhr[i] = new XMLHttpRequest();

url = "closure.php?data=" + i;

xhr[i].open("GET", url, true);

xhr[i].onreadystatechange = function(){

if (xhr[i].readyState === 4 && xhr[i].status === 200){

console.log('Response from request ' + i + ' [ ' + xhr[i].responseText + ']');

}

};

xhr[i].send();

})(i);

}

})();

};

// PHP [closure.php]

echo "Hello Kitty -> " . $_GET["data"];

响应

Response from request 0 [ Hello Kitty -> 0]

Response from request 1 [ Hello Kitty -> 1]

Response from request 2 [ Hello Kitty -> 2]

以上是 XMLHttpRequest在for循环中 的全部内容, 来源链接: utcz.com/qa/418196.html

回到顶部