Ajax请求:未定义

时间:2019-03-06 18:51:43

标签: javascript html json ajax request

您好,我想使用ajax请求api。 该API具有普通的json(我认为) 现在我在javascript中设置了一个ajax请求,但是我得到了变量的未定义错误。我想我知道问题了,但我还不知道答案。

<script type="text/javascript">
document.getElementById("button").addEventListener('click', loadUsers);


// Load Github USers

function loadUsers(){
    var xhr = new XMLHttpRequest(); 
    xhr.open("GET", "dontKnowtheUrl", true);


    xhr.onload = function()
                {

                        if(this.status == 200){

                            var stats = JSON.parse(this.responseText)
                            var output = "";
                            for(var i in stats){
                                output += 
                                '<div class="user">' +
                                '<ul>' +
                                '<li>p_level: '+stats[i].p_level+'</li>'+
                                '<li>p_currentmmr: '+stats[i].p_currentmmr+'</li>' +
                                '</ul>' +
                                '</div>';
                            }
                            document.getElementById("users").innerHTML = output;
                        }

                }


                xhr.send();
}

这是javascript部分 api中的json文件看起来像这样

     {"results":
    [{"p_id":"test",
    "p_name":"test",
    "p_level":"test",
    "p_platform":"test",
    "p_user":"test",
    "p_currentmmr":"test",
    "p_currentrank":"test",
    "kd":"test"},
    {"p_id":"test",
    "p_name":"test",
    "p_level":"test",
    "p_platform":"test",
    "p_user":"test",
    "p_currentmmr":"test",
    "p_currentrank":"test",
    "kd":"test"}],
    "totalresults":2}

我的猜测是json文件不是正常数组,因为它包含“ results”:和“ totalresults”属性。 有谁知道如何解决它而不进入json文件?

1 个答案:

答案 0 :(得分:0)

您将要遍历stats.results而不是stats,请参见以下示例:

function loadUsers(){
    var xhr = new XMLHttpRequest(); 
    xhr.open("GET", "dontKnowtheUrl", true);


    xhr.onload = function()
                {

                        if(this.status == 200){

                            var stats = JSON.parse(this.responseText)
                            var output = "";
                            for(var i in stats.results){
                                var row = stats.results[i];
                                output += 
                                '<div class="user">' +
                                '<ul>' +
                                '<li>p_level: '+row.p_level+'</li>'+
                                '<li>p_currentmmr: '+row.p_currentmmr+'</li>' +
                                '</ul>' +
                                '</div>';
                            }
                            document.getElementById("users").innerHTML = output;
                        }

                }


                xhr.send();
}