Здравствуйте, я хотел запросить 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?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Вы захотите перебирать 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.results[i].p_currentmmr см. JSFiddle
Обновил мой ответ, чтобы исправить это, спасибо, что поймали это!
Да, вам также нужно изменить вывод, например, «stats.results[i].p_level», и не позволяйте оставаться как «stats[i].p_level», то же самое касается и другой переменной, спасибо.