Javascript 使用循环的Ajax请求

Javascript 使用循环的Ajax请求,javascript,ajax,xmlhttprequest,Javascript,Ajax,Xmlhttprequest,你能帮我把这个集成到for循环中吗 我试图从带有类“links”的元素中获取href,然后使用它们 进行httprequest。 我已经看到firebug发送了httpRequests,我认为问题在于alertContents函数中的SOMARE。 我挣扎了一整天,但没有结果 <a class="links" href="/1">Link1</a> <a class="links" href="/2">Link2</a> <a class="

你能帮我把这个集成到for循环中吗

我试图从带有类“links”的元素中获取href,然后使用它们 进行httprequest。
我已经看到firebug发送了httpRequests,我认为问题在于alertContents函数中的SOMARE。 我挣扎了一整天,但没有结果

<a class="links" href="/1">Link1</a>
<a class="links" href="/2">Link2</a>
<a class="links" href="/3">Link3</a>

<script>
for(var i = 0; i < 2; i++) {
makeRequest(document.getElementsByClassName("links")[i].href);
}

function makeRequest(url) {
if (window.XMLHttpRequest) { // Mozilla, Safari, ...
  httpRequest = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE
  try {
    httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
  } 
  catch (e) {
    try {
      httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
    } 
    catch (e) {}
  }
}

if (!httpRequest) {
  alert('Giving up :( Cannot create an XMLHTTP instance');
  return false;
}
httpRequest.onreadystatechange = alertContents;
httpRequest.open('GET', url);
httpRequest.send();
}

function alertContents() {
if (httpRequest.readyState === 4) {
  if (httpRequest.status === 200) {
    alert(httpRequest.responseText);
   // here i get the final value of the variable i
  } else {
    alert('There was a problem with the request.');
  }
}
}
</script>

对于(变量i=0;i<2;i++){
makeRequest(document.getElementsByClassName(“links”)[i].href);
}
函数makeRequest(url){
如果(window.XMLHttpRequest){//Mozilla,Safari。。。

httpRequest=新的XMLHttpRequest(); }如果(window.ActiveXObject){//IE 试一试{ httpRequest=新的ActiveXObject(“Msxml2.XMLHTTP”); } 捕获(e){ 试一试{ httpRequest=新的ActiveXObject(“Microsoft.XMLHTTP”); } 捕获(e){} } } 如果(!httpRequest){ 警报(“放弃:(无法创建XMLHTTP实例”); 返回false; } httpRequest.onreadystatechange=alertContents; httpRequest.open('GET',url); httpRequest.send(); } 函数alertContents(){ if(httpRequest.readyState==4){ if(httpRequest.status==200){ 警报(httpRequest.responseText); //这里我得到变量i的最终值 }否则{ 警报(“请求有问题”); } } }
我声明了变量,因此它不是全局变量,并将回调函数移到makeRequest函数中

for (var i = 0; i < 2; i++) {
    makeRequest(document.getElementsByClassName("links")[i].href);
}

function makeRequest(url) {

    var httpRequest;

    function alertContents() {
        if (httpRequest.readyState === 4) {
            if (httpRequest.status === 200) {
                alert(httpRequest.responseText);
                // here i get the final value of the variable i
            } else {
                alert('There was a problem with the request.');
            }
        }
    }

    if (window.XMLHttpRequest) { // Mozilla, Safari, ...
        httpRequest = new XMLHttpRequest();
    } else if (window.ActiveXObject) { // IE
        try {
            httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try {
                httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e) {}
        }
    }

    if (!httpRequest) {
        alert('Giving up :( Cannot create an XMLHTTP instance');
        return false;
    }
    httpRequest.onreadystatechange = alertContents;
    httpRequest.open('GET', url);
    httpRequest.send();

}
for(变量i=0;i<2;i++){
makeRequest(document.getElementsByClassName(“links”)[i].href);
}
函数makeRequest(url){
var-httpRequest;
函数alertContents(){
if(httpRequest.readyState==4){
if(httpRequest.status==200){
警报(httpRequest.responseText);
//这里我得到变量i的最终值
}否则{
警报(“请求有问题”);
}
}
}
如果(window.XMLHttpRequest){//Mozilla,Safari。。。

httpRequest=新的XMLHttpRequest(); }如果(window.ActiveXObject){//IE 试一试{ httpRequest=新的ActiveXObject(“Msxml2.XMLHTTP”); }捕获(e){ 试一试{ httpRequest=新的ActiveXObject(“Microsoft.XMLHTTP”); }捕获(e){} } } 如果(!httpRequest){ 警报(“放弃:(无法创建XMLHTTP实例”); 返回false; } httpRequest.onreadystatechange=alertContents; httpRequest.open('GET',url); httpRequest.send(); }
global variables是您问题的开始。@epascarello,您有时间解释吗?httpRequest=new-XMLHttpRequest();@epascarello,谢谢,我会试试。我从一个url获得的响应文本是响应文本的3倍。