AJAX调用获取ID,然后在每个ID的新AJAX调用中插入ID

时间:2014-01-04 09:21:27

标签: jquery ajax api function

我希望这个标题能够解释我正在尝试做什么。我迷失在整个主题上,所以请耐心等待我:)

我正在使用以下内容检索特定类别中所有对象的个人ID

function mba(user, password) {
    var tok = user + ':' + password;
    var hash = btoa(tok);
    console.log(hash);
    return 'Basic ' + hash;
}

$.ajax({
    url: "https://domain.com/category?strip=true&q=currentCatId='LONG_UNIQUE_ID'&fields=id",
    type: "GET",

    beforeSend: function (xhr) {
        xhr.setRequestHeader("Authorization", mba("USER", "PASS"));
    },

    error: function(xhr, status, error){
        alert(status + " - " + error);
    }
});

这很好用。我需要帮助的是,一旦完成,我需要将检索到的每个ID插入到新的呼叫中。

$.ajax({
    url: "https://domain.com/category/"+ INDIVIDUAL_IDS_SHOULD_GO_HERE +"?strip=true&expand=true&collections=something,something2",
    type: "GET",

    beforeSend: function (xhr) {
        xhr.setRequestHeader("Authorization", mba("USER", "PASS"));
    },

    success: function(data){
        $(".myCont").loadTemplate("#myTemp", data);
},

    error: function(xhr, status, error){
        alert(status + " - " + error);
}

});

因此第一次调用获取该特定类别中每个对象的所有ID。但后来我需要有关每个对象的扩展信息,只能通过在第二次调用中给出唯一ID来检索(对于第一次调用中检索到的每个ID)。

我知道我在这里提供的代码不正确。我需要理解(并且做对了)应该如何做到这一点。

“$(”。myCont“)。loadTemplate(”#myTemp“,data);”部分是JQueryTemplate。所以这就是我用来表示从列表中的每个对象收集的实际(扩展)数据。

1 个答案:

答案 0 :(得分:0)

第一次调用中,您可以(虽然有更好的方法)只需添加“成功”参数并在其中添加第二个ajax调用

 success: function(data){
    //pseudo code

 for each data
 INDIVIDUAL_IDS_SHOULD_GO_HERE = this data
 ajax call with that INDIVIDUAL_ID
 end for each data
 }

很难评论,因为我猜测第一次通话会返回什么,但正如你所说'id s '我猜你可以通过它们进行后续调用。

但是我可能(根据具体情况)编写一个运行php脚本的调用来调用每个URL并返回一个JSON对象,结果作为一个数据集 - 减少客户端的调用=减少流量和整体一个更好的体验(特别是如果他们在移动设备上 - 10个电话可能需要很长时间)。