如果我想要的 URL 在 API 的 JSON 中,我怎样才能得到 API 的 URL?

How can I get the URL for an API if the URL I want is in the API's JSON?

所以我正在使用 soundcloud API 来获取用户的收藏夹。他们的最大限制是每个请求 200,但是在 object 的末尾,他们有一个 a_href 键,其值是收藏夹的下一页。

基本上,我正在尝试放置一个按钮,以便用户可以单击它,然后它将为他们提供接下来的 200 个赞。我的问题是在不多次调用原始 API URL 的情况下访问 data.a_href。我的代码看起来像这样:

function getAPIURL(username, subSection){
    apiurl = "https://api.soundcloud.com/users/" + username + "/" + subSection + "/?client_id=" + clientID + limit + "&linked_partitioning=1"
} 


function getFavorites(){
    titleList.length = 0;
    artistList.length = 0;
    imgList.length = 0;
    idList.length = 0;
    $(".trackList").html("");
    username = $("input").val();
    subSection = "favorites";
    getAPIURL(username, subSection); 
    getAPI(apiurl);
}

function getAPI(apiurl){
    $.getJSON(apiurl, function(data) {
        //Does some stuff then
        $(".nextPage").on("click", function(){
            titleList.length = 0;
            artistList.length = 0;
            imgList.length = 0;
            idList.length = 0;
            $(".trackList").empty();
            getAPI(data.next_href);
        })
      });
}

当我转到第二页时,以上内容效果很好。但是,当我尝试转到第三页时,它就像在调用第三页之前同时调用了第二页和第一页....

有什么想法吗?

这是在每次调用时重新应用点击:

function getAPI(apiurl){
    $.getJSON(apiurl, function(data) {
        //Does some stuff then
        $(".nextPage").on("click", function(){
            titleList.length = 0;
            artistList.length = 0;
            imgList.length = 0;
            idList.length = 0;
            $(".trackList").empty();
            getAPI(data.next_href);
        })
      });
}

每调用一次,点击处理程序的数量就会增加 1,每个都会被调用。

要停止重新应用它,请将其移除然后再应用。 off() 进行删除。

function getAPI(apiurl){
    $.getJSON(apiurl, function(data) {
        //Does some stuff then
        $(".nextPage").off("click").on("click", function(){
            titleList.length = 0;
            artistList.length = 0;
            imgList.length = 0;
            idList.length = 0;
            $(".trackList").empty();
            getAPI(data.next_href);
        })
      });
}

为了让以后的生活更轻松,请将 onclick 绑定与 getAPI 调用分开。

如果按钮在 DOM 中不存在,直到某些事件发生,绑定到父元素,它们将不需要 off/on:

$("PARENT OF THE .nextPage BUTTON").on("click", ".nextPage", function(){
    ...
})