API возвращает объект в формате
{"coord":{"lon":-0.13,"lat":51.51},"weather":anArray}
Поскольку объекты не имеют свойства длины, ваш цикл никогда не будет выполнен.
Предположительно, вы намеревались выполнить итерацию через .weather
свойство вместо.Попробуйте это:
if (this.readyState == 4 && this.status == 200) {
let output = "";
var data = JSON.parse(this.response).weather;
console.log(data);
for(var i = 0; i < data.length; i++){
output += '<li>' + data[i] + '</li>';
}
console.log(output);
document.getElementById('list').innerHTML = output;
}
EDIT
Конкатенация объекта и строки неявно вызывает метод toString
объекта, который возвращает [Object object]
.Вместо этого вам следует объединить строку со свойством .description
.
Попробуйте это:
if (this.readyState == 4 && this.status == 200) {
let output = "";
var data = JSON.parse(this.response).weather;
console.log(data);
for(var i = 0; i < data.length; i++){
output += '<li>' + data[i].description + '</li>';
}
console.log(output);
document.getElementById('list').innerHTML = output;
}