2017-05-08 267 views
0

我正在使用我擁有的JSON文件,並將其鏈接到我的JavaScript中。 我試圖通過AJAX將它請求顯示在我的console.log上,但我只爲readystatechange函數獲取null。我究竟做錯了什麼?JSON AJAX Http請求

此外,爲了更好地闡明我爲我的課程做了這些,理想情況下我的目標是什麼;我有一個我創建的json文件(myjson.com),我在JavaScript中擁有該URL,並且我試圖讓該json url更新爲我的JavaScript,因此當我執行console.log時,它顯示了來自json的對象。這裏是我的代碼:

<div id="btn1"> Update </div> 
<div id="output"></div> 

<script> 

var output = document.getElementById("output"); 

document.getElementById("btn1").onclick = function() { 
    var a = newXMLHttpRequest(); 
    a.onreadystatechange = function() { 

    } 
    a.open("GET", "https://api.myjson.com/bins/z79bt", true); 
    a.send(); 
}; 

</script> 

UPDATE

從註釋代碼:

var output = document.getElementById("output"); 
document.getElementById("btn1").onclick = function() { 
    var a = new XMLHttpRequest(); 
    a.onreadystatechange = function() { 
    if(this.readyState == 4) { 
     var myObj = this.responseText; 
    } 
    console.log(a); 
    } 
    a.open("GET", "api.myjson.com/bins/z79bt";, true); 
    a.send(); 
}; 

回答

3

兩個問題:

  • 你錯過了一個空間newXMLHttpRequest
  • 你沒有做任何事情的狀態變化回調內部
  • (第三:你還沒有填充輸出格)

在這裏看到的活生生的例子:

var output = document.getElementById("output"); 
 

 
document.getElementById("btn1").onclick = function() { 
 
    var a = new XMLHttpRequest(); 
 
    a.onreadystatechange = function() { 
 
     if(a.readyState === XMLHttpRequest.DONE && a.status === 200) { 
 
     console.log(a.responseText); 
 
     output.textContent = a.responseText; 
 
     } 
 
    } 
 
    a.open("GET", "https://api.myjson.com/bins/z79bt", true); 
 
    a.send(); 
 
};
<div id="btn1"> Update </div> 
 
<div id="output"></div>


UPDATE

從註釋

固定碼:

var output = document.getElementById("output"); 
 
document.getElementById("btn1").onclick = function() { 
 
    var a = new XMLHttpRequest(); 
 
    a.onreadystatechange = function() { 
 
    if(this.readyState == 4) { 
 
     var myObj = this.responseText; 
 
     console.log(myObj); 
 
    } 
 
    
 
    } 
 
    a.open("GET", "https://api.myjson.com/bins/z79bt", true); 
 
    a.send(); 
 
};
<div id="btn1"> Update </div> 
 
<div id="output"></div>

+0

嘿感謝你對我忘了新的XMLHttpRequest之間的空間我有一個更多的問題你的方法用if語句作品,我看到我回來我的JSON對象我正在一步一步地跟着一本書,當我這樣做時,我仍然沒有獲取信息,你能否看到是否有什麼錯誤? –

+0

var output = document.getElementById(「output」); document.getElementById(「btn1」)。onclick = function(){ \t var a = new XMLHttpRequest(); \t a.onreadystatechange =函數(){ \t \t如果(this.readyState == 4){ \t \t \t變種MyObj中= this.responseText; \t \t} \t \t \t console.log(a); \t} \t a.open(「GET」,「https://api.myjson.com/bins/z79bt」,true); \t a.send(); }; –

+0

@ user7656142'myObj'只能在函數範圍內生存。你正在記錄變量'a'而不是'myObj'。 – Shomz