从api返回空数据的Javascript
我有以下api从中获取数据 我尝试使用以下代码访问json:从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
使用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发送请求后,您试图立即获得响应。您无法知道您的响应是否在该行中,这是因为您的请求不同步。