JSON - 无法读取未定义的属性

时间:2014-07-07 19:40:21

标签: javascript jquery ajax json

尝试从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";
}

2 个答案:

答案 0 :(得分:3)

userID不是JSON对象中的键名。你需要这样做:

alert(json[userID].name);

另外,请记住,如果您的JSON以字符串形式出现,则需要先解析它,然后才能访问它。

答案 1 :(得分:0)

json[userID].name怎么样,否则你将从你的json对象获取属性userID而不是userID的值