Ajax-запрос: не определено

Здравствуйте, я хотел запросить API с ajax. API имеет простой json (как я и думал) теперь я настроил запрос ajax в javascript, но получаю неопределенную ошибку для переменных. Я думаю, что знаю проблему, но пока не знаю ответа.

<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 файл json из API выглядит так

     {"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 не является обычным массивом, поскольку он содержит свойства «результаты» и «общие результаты». Кто-нибудь знает, как это исправить, не залезая в файл json?

Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
0
0
39
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы захотите перебирать stats.results, а не просто статистику, см. следующий пример:

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();
}

Да, вам также нужно изменить вывод, например, «stats.results[i].p_level», и не позволяйте оставаться как «stats[i].p_level», то же самое касается и другой переменной, спасибо.

bot_diyar 06.03.2019 20:10

Вам необходимо обновить stats.results[i].p_level и stats.results[i].p_currentmmr см. JSFiddle

Mr Rethman 06.03.2019 20:11

Обновил мой ответ, чтобы исправить это, спасибо, что поймали это!

Darryl Huffman 06.03.2019 21:14

Другие вопросы по теме