从函数中检索变量
Retrieving a variable from within a function
我正在尝试从英雄联盟中提取信息API。
为了简化我正在做的事情,我试图提取有关用户及其之前匹配的信息。我 运行 遇到的问题是,当我解析 JSON 请求时,它 returns 冠军 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>")
}
});
我无法访问 champName
变量,因为它嵌套在第二个 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 请求中,因为无论如何您都需要等到该请求完成。
你应该把 append 语句放在回调中,因为 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>")
});
}
});
希望对您有所帮助。
我正在尝试从英雄联盟中提取信息API。
为了简化我正在做的事情,我试图提取有关用户及其之前匹配的信息。我 运行 遇到的问题是,当我解析 JSON 请求时,它 returns 冠军 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>")
}
});
我无法访问 champName
变量,因为它嵌套在第二个 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 请求中,因为无论如何您都需要等到该请求完成。
你应该把 append 语句放在回调中,因为 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>")
});
}
});
希望对您有所帮助。