我有两个循环。第一个将多个url保存到数组“tempUrls”中。在第二个中,我想将“tempUrls”-Array中的每个url发送到一个名为“ajaxCall”的函数。但由于某种原因,我只能将最后添加的URL添加到ajax调用中。其他一切都失踪了,我不知道为什么。
如果您需要进一步详细说明,请随时提出!
非常感谢
编辑:这是我程序的所有相关代码。我正在做的是从第一页获取网址列表。然后我调用我找到的网址,并获取元机器人信息。
function startChecker() {
for (var n = gNumOfSites; n > 0; n--) {
console.log('in');
var nextUrl = gUrlSnippet + n;
ajaxCall(nextUrl, extractData);
}
}
function ajaxCall(url, callback) {
return $.ajax({
type: 'GET',
url: url,
success: callback
});
}
function extractData(res) {
var tempUrls = [];
var html = res.responseText;
var linkUrl;
var links = $(html).find('.tags li');
for (var i = 0; i < links.length; i++) {
var link = $(links[i]).find('a');
linkUrl = $(link).attr("href");
gUrls.push(linkUrl);
tempUrls.push(linkUrl);
var anchor = $(link).text();
gAnchors.push(anchor);
console.log('anchor');
}
for (var j = 0; j < tempUrls.length; j++) {
var urlExtract = gUrlSnippet.split('/');
var nextUrl = 'http://' + urlExtract[2] + tempUrls[j];
console.log(nextUrl);
ajaxCall(nextUrl, function(res) {
getRobots(res, nextUrl);
});
}
tempUrls = [];
}
function getRobots(res, nextUrl) {
var str = '';
var html = res.responseText;
var robots = $(html).filter('meta[name=robots]');
if (robots.length === 0) {
str = "not found";
} else {
for (var i = 0; i < robots.length; i++) {
str = str + $(robots[i]).attr("content");
}
}
gRobots.push(nextUrl + str);
$(document).ajaxStop(function() {
setText();
$("#loading").hide();
});
}
答案 0 :(得分:0)
由于ajax调用是异步的,因此每次进行下一次调用时都会覆盖以前的调用数据。您可能希望查看将每次调用的值返回到单独的位置,例如数组中的不同索引。
为Plunker提供更多代码,我可以帮助您提高一点。无法掌握从AJAX调用中存储数据的位置。