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中使用循环内部的回调时,是否有任何方法可以保存在循环中更新的变量以用于回调?