关于jquery:AJAX:如果状态代码为200,请检查URLS

AJAX: Check URLS if status code 200

我正在尝试创建一个代码来检查URL列表(如果可用或不可用)但我的问题是它只返回循环内的最后一个链接。

下面是我的代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
$('#dlink').click(function(e) {
    e.preventDefault();
    var dcode = $('#dnum').text();
    var dtemp = 0;
    for(dtemp = 1; dtemp <= 10; dtemp++) {
      var dlink = 'http://sample.com/export_template' + dtemp + '?field_delivery_code_value=' + dcode;
      $.ajax(
      {
        type: 'GET',
        cache: 'FALSE',
        url: dlink,
        success: function(response) {
          window.open(dlink);
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
        console.debug("error for" + dtemp);
        console.log(XMLHttpRequest);
        }
      });
    }
});


这是一个可以帮助你做到这一点的函数,你不需要jQuery。

1
2
3
4
5
6
7
8
9
10
11
var is200 = function (url, callback) {
  var request = new XMLHttpRequest();
  request.open('GET', url, false)
  request.onreadystatechange = function () {
      // At ready state 2, headers are received and status code by extension
      if( request.readyState == 2)
        return callback(request.statusCode == 200);          
      }
  };
  request.open(null);
};

回调函数将有一个参数:状态代码与数字200相等的布尔值。


你在循环中使用一个回调并将一个变量传递给它,它在循环中更新。 因此,当调用回调时,更新后的变量将使用最后一个状态进行所有回调!
有关更多信息,请参阅此主题:在javascript中使用循环内部的回调时,是否有任何方法可以保存在循环中更新的变量以用于回调?