weixin_33722405 2014-12-03 20:21 采纳率: 0%
浏览 36

Ajax请求使用循环

Can you help me please to integrate this ajax code in a for loop?

I am trying to get the href from elements with class "links", and then use them to make httpRequests.
I have seen with firebug, that the httpRequests are sended, and i think the problem is somwere in the alertContents function. I struggled all day, but no result.

<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>
  • 写回答

1条回答 默认 最新

  • weixin_33701617 2014-12-03 20:36
    关注

    I declared the variable so it is not global and moved your callback function inside of the makeRequest function.

    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();
    
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料