2016-02-26 35 views
2

我試圖從傳奇API的信息中提取信息。從一個函數內檢索一個變量

爲了簡化我在做的事情,我試圖提取關於用戶和他們先前匹配的信息。我碰到的問題是,當我解析一個JSON請求時,它會返回一個冠軍ID而不是他們的名字(例如:412而不是「Thresh」)。

我可以看到的唯一解決方案是製作另一個JSON請求並解析該冠軍名稱的數據。目前我看起來像這樣。

$.getJSON(championMasteryPHP, function (json) { 
    for (var i = 0; i < 20; i++) { 
     var champID = json[i].championId; 
     var championInfo = "http://example.com/champInfo.php?summonerid=" + champID; 

    $.getJSON(championInfo, function (json2) { 
     var champName = json2.name; 
    }); 

    $('#champ').append("<li>"+champID+" - "+champName+"</li>") 
    } 
}); 

我不能因爲它嵌套在第二JSON函數中訪問champName變量。

有沒有更好的方法來做到這一點?

+2

只需將li添加到嵌套的chanpionInfo調用中?另外,它的json2.name而不是json.name – juvian

回答

4
$.getJSON(championMasteryPHP, function (json) { 
    for (var i = 0; i < 20; i++) { 
     var champID = json[i].championId; 
     var championInfo = "http://example.com/champInfo.php?summonerid=" + champID; 

    $.getJSON(championInfo, function (json2) { 
     var champName = json2.name; 
     $('#champ').append("<li>"+champID+" - "+champName+"</li>") 
    }); 
    } 
}); 

只是把它放在第二個json請求中,因爲你需要等到請求完成。

+0

哦,哇,這是完美的。謝謝你的幫助! – Zlkva

4

你應該把追加聲明回調,因爲getJSON是一個異步方法(也意味着該請求是在後臺運行,並調用你的函數回來的時候就得到了響應),所以你應該等待首先響應,那麼你可以將其附加到#champ

$.getJSON(championMasteryPHP, function (json) { 
    for (var i = 0; i < 20; i++) { 
     var champID = json[i].championId; 
     var championInfo = "http://example.com/champInfo.php?summonerid=" + champID; 

     $.getJSON(championInfo, function (json2) { 
      var champName = json.name; 

      $('#champ').append("<li>"+champID+" - "+champName+"</li>") 
     }); 

    } 
}); 

希望這有助於。

+0

小問題, 移動append語句後,現在我的第一個調用循環,所以我的最終結果如下所示。 http://i.imgur.com/Cp5SpX0.png 它循環列表中的最後一項(例如Id 58)。我做錯了什麼? – Zlkva

+0

我不確定你期待的結果是什麼,但這真的取決於Json的迴應。 (只是小注:如果你使用'json.length',不用'20'更好)。 –

+0

我在試圖做的是獲取這些數據 http://pastebin.com/H1hbCJXJ 但它不包含冠軍的名字,只是他們的ID。正因爲如此,我需要解析每個冠軍ID的個人數據才能得到他們的名字。看起來像這樣。 http://pastebin.com/CWZ1R0Pg 現在我遇到的問題是,我的第一個解析會凍結數據集中的最後一個結果,而不是在for循環中循環並拉取每個結果。它看起來像這樣。 http://i.imgur.com/Cp5SpX0.png 而不是這個 http://i.imgur.com/y91HRJ3.png – Zlkva

相關問題