[英]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.