Javascript 为什么我会得到;forEach不是XMLHttpRequest.request.onload中的函数;错误?

Javascript 为什么我会得到;forEach不是XMLHttpRequest.request.onload中的函数;错误?,javascript,json,Javascript,Json,我正在尝试使用riot api,但一直在使用。每一个都不是函数错误。你们能帮帮我吗?我的Js代码: const app = document.getElementById('resultContainer') const results = document.createElement('div') results.setAttribute('class', 'results') app.appendChild(results) var request = new XMLHttpRequest

我正在尝试使用riot api,但一直在使用。每一个都不是函数错误。你们能帮帮我吗?我的Js代码:

const app = document.getElementById('resultContainer')
const results = document.createElement('div')
results.setAttribute('class', 'results')
app.appendChild(results)

var request = new XMLHttpRequest()
request.open('GET', 'https://europe.api.riotgames.com/lor/ranked/v1/leaderboards?api_key=APIKEY', true)
request.onload = function() {
    var data = JSON.parse(this.response)    
    if (request.status >= 200 && request.status < 400) {
        data.forEach((players) => {
          const results = document.createElement('div')
          results.setAttribute('class', 'results')
    
          const h1 = document.createElement('h1')
          h1.textContent = players.name
    
          const p = document.createElement('p')
          rank = players.rank.substring(0, 300)
          p.textContent = `${players.rank}...`
    
          results.appendChild(card)
          results.appendChild(h1)
          results.appendChild(p)
        })
      } else {
       console.log('Error')
      }

}
request.send()

因为当您将响应解析为
JSON
时,它会创建一个
对象,而不是数组


您需要在该对象的
players
属性上使用
forEach
,即
data.players。forEach

简短的回答是响应不是数组,它显然是一个对象
forEach
只能在
Array
s上使用
data: {players: Array(1155)}