XHR异步无法正常工作

时间:2015-05-13 02:10:38

标签: javascript

我有一个在使用XHR的同步版本时工作正常的代码,但在使用异步版本时不再有效。我是javascript的初学者,所以也许它与XHR无关,而且它只是一个js语法问题(例如由于使用外部变量,回调效果不佳)。

这是初始工作代码的一部分(我希望我没有通过尝试简化代码来隐藏错误):

function x() {
  var links = document.querySelectorAll('#a');
  for (i = 0; i < links.length; i++) {
    var request = "test=" + i;
    var xhr = new XMLHttpRequest;
    xhr.open('POST', '/test.php', false);
    xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
    xhr.send(request);
    links[i].href = xhr.responseText;
  }
}

然后变成,当我试图异步时:

function x() {
  var links = document.querySelectorAll('#a');
  for (i = 0; i < links.length; i++) {
    var request = "test=" + i;
    var xhr = new XMLHttpRequest;
    xhr.open('POST', '/test.php', true);
    xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
    xhr.onreadystatechange = function() {
      if (xhr.readyState == 4 && xhr.status == 200){
        links[i].href = xhr.responseText;
      }
    }
    xhr.send(request);
  }
}

0 个答案:

没有答案