从api返回空数据的Javascript

从api返回空数据的Javascript,javascript,json,Javascript,Json,我有以下api从中获取数据 我尝试使用以下代码访问json: 使用XMLHttpRequest获取文件的内容。 内容是以JSON格式编写的,可以轻松地转换为JavaScript对象 var requestURL=http://starlord.hackerearth.com/gamesarena'; var request=new XMLHttpRequest(); 打开('GET',requestURL); request.responseType='json'; request.sen

我有以下api从中获取数据 我尝试使用以下代码访问json:


使用XMLHttpRequest获取文件的内容。
内容是以JSON格式编写的,可以轻松地转换为JavaScript对象

var requestURL=http://starlord.hackerearth.com/gamesarena'; var request=new XMLHttpRequest(); 打开('GET',requestURL); request.responseType='json'; request.send(); var超级英雄=请求。响应; console.log(请求.响应);
嗯,这是因为您试图在响应到来之前获取内容。默认情况下,所有XMLHttpRequests都是异步的(顺便说一句,许多浏览器不允许您进行同步请求)。您可以通过如下方式异步获取响应内容:

  var requestURL = 'http://starlord.hackerearth.com/gamesarena';
  var request = new XMLHttpRequest();
  request.onreadystatechange = function() {
    if(request.readyState === XMLHttpRequest.DONE) {
        // response
        console.log(request.response);
    }
  };
  request.open('GET', requestURL);
  request.responseType = 'json';
  request.send();

您必须使用
load
事件来处理服务器响应:

request.addEventListener("load", function(){
    console.log(this.responseText);
});
请注意,
load
事件仅在服务器向客户端发送响应时触发

例如:


使用XMLHttpRequest获取文件的内容。
内容是以JSON格式编写的,可以轻松地转换为JavaScript对象

var requestURL=http://starlord.hackerearth.com/gamesarena'; var request=new XMLHttpRequest(); 打开('GET',requestURL); request.responseType='json'; addEventListener(“加载”,函数(){ console.log(this.responseText); }); request.send();
您能解释一下发生了什么吗?我指的是更改。正如我在顶部所说的,您正在创建对API的异步请求,所有异步方法都必须处理回调的结果。在本例中,我们的回调函数是我们分配给
onreadystatechange
的函数
XMLHttpRequest.DONE
只是为了了解请求是否成功完成。另一件事是,在向API发送请求后,您试图立即获得响应。您无法知道您的响应是否在该行中,这是因为您的请求不同步。