使用不同的参数多次进行相同的ajax调用

时间:2015-07-14 20:38:34

标签: javascript ajax

我有两个循环。第一个将多个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();
    });
}

1 个答案:

答案 0 :(得分:0)

由于ajax调用是异步的,因此每次进行下一次调用时都会覆盖以前的调用数据。您可能希望查看将每次调用的值返回到单独的位置,例如数组中的不同索引。

为Plunker提供更多代码,我可以帮助您提高一点。无法掌握从AJAX调用中存储数据的位置。