尝试从json获取一些数据时遇到问题。
通常我必须硬编码我想要的JSON变量(ID),例如
success: function (json) {
alert(json.ID.name);
}
哪个工作正常,但我需要使其动态,因为我的ID需要根据请求进行更新。
当我尝试以下
时success: function (json) {
// ID is given above and it is working fine
var userID = ID.replace(" ", "");
userID = userID.toLowerCase().trim();
alert(json.userID.name);
}
这样做会给我一个错误
未捕获的TypeError:无法读取属性' name'未定义的
警报时的userID提供与ID相同的字符串,但将其粘贴在json中似乎不起作用。有什么理由吗?
谢谢!
示例(遗憾的是我无法发布我的API密钥)
var ID = "";
ID = $("#theID").val();
if (ID != "") {
$.ajax({
url: 'https://na.api.pvp.net/api/lol/na/v1.4/summoner/by-name/' + ID + '?api_key=<KEY>',
type: 'GET',
dataType: 'json',
data: {
//email: $('#sube').val()
},
success: function (json) {
var userID = ID.replace(" ", "");
userID = userID.toLowerCase().trim();
document.getElementById("who").innerHTML = "Who: " + json.userID.name;
document.getElementById("level").innerHTML = "Level:" + json.userID.id;
document.getElementById("id").innerHTML = "ID: " + json.userID.summonerLevel;
document.getElementById("idCall").innerHTML = "Status: SUCCESS";
document.getElementById("url").innerHTML = "URL: " + 'https://na.api.pvp.net/api/lol/na/v1.4/summoner/by-name/' + userID + '?api_key=<KEY>';
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
document.getElementById("idCall").innerHTML = "Status: FAILED";
}
});
} else {
document.getElementById("idCall").innerHTML = "Status: FAILED";
}
答案 0 :(得分:3)
userID不是JSON对象中的键名。你需要这样做:
alert(json[userID].name);
另外,请记住,如果您的JSON以字符串形式出现,则需要先解析它,然后才能访问它。
答案 1 :(得分:0)
json[userID].name
怎么样,否则你将从你的json对象获取属性userID而不是userID的值