簡體   English   中英

Javascript從api返回空數據

[英]Javascript returning null data from an api

我有以下api,可從http://starlord.hackerearth.com/gamesarena提取數據。我正在嘗試使用以下代碼訪問json:

 <!DOCTYPE html> <html> <body> <h2>Use the XMLHttpRequest to get the content of a file.</h2> <p>The content is written in JSON format, and can easily be converted into a JavaScript object.</p> <p id="demo"></p> <script> var requestURL = 'http://starlord.hackerearth.com/gamesarena'; var request = new XMLHttpRequest(); request.open('GET', requestURL); request.responseType = 'json'; request.send(); var superHeroes = request.response; console.log(request.response); </script> </body> </html> 

我希望看到JSON數據,但會得到null。您能解釋一下缺少的內容嗎

好吧,這是因為您正在嘗試在響應出現之前獲取內容。 默認情況下,所有XMLHttpRequest都是異步的(許多瀏覽器不允許btw發出同步請求)。 您可以像這樣異步獲取響應內容:

  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事件。

例:

 <!DOCTYPE html> <html> <body> <h2>Use the XMLHttpRequest to get the content of a file.</h2> <p>The content is written in JSON format, and can easily be converted into a JavaScript object.</p> <p id="demo"></p> <script> var requestURL = 'http://starlord.hackerearth.com/gamesarena'; var request = new XMLHttpRequest(); request.open('GET', requestURL); request.responseType = 'json'; request.addEventListener("load", function(){ console.log(this.responseText); }); request.send(); </script> </body> </html> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM