2017-05-08 6 views
0

Ich arbeite mit einer JSON-Datei, die ich habe, und ich verlinke es in meinem JavaScript. Ich versuche, es über AJAX angefordert zu bekommen, um auf meinem console.log zu erscheinen, aber ich bekomme gerade null für meine readystatechange Funktion. Was mache ich falsch?JSON AJAX Http Anfrage

Auch um besser zu klären, mache ich das für meinen Kurs und im Idealfall, was mein Ziel ist; Ich habe eine JSON-Datei, die ich erstellt habe (myjson.com), ich habe diese URL in meinem JavaScript, und ich versuche, diese JSL-URL auf mein JavaScript zu aktualisieren, also wenn ich eine console.log mache, zeigt es die Werte der Objekte aus dem JSON. Hier ist mein Code:

<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

-Code aus dem Kommentar:

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(); 
}; 

Antwort

3

Zwei Fragen:

  • Sie fehlt ein Raum in newXMLHttpRequest
  • Sie sind nicht in der Statusänderung Rückruf etwas zu tun
  • (dritte: Sie sind auch nicht der Ausgang div bevöl)

live Beispiel Siehe hier:

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

Fest Code aus dem Kommentar:

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

Hey danke du hast recht ich den Raum zwischen dem neuen XMLHttpRequest habe ich vergessen, eine weitere Fragen Ihre Methode mit den if-Anweisung funktioniert hatte, und ich sehe, dass ich Ich bekomme meine JSON-Objekte zurück Ich folge einem Buch Schritt für Schritt und ich bekomme immer noch keine Informationen zurück, wenn ich es auf diese Weise mache Kannst du sehen, ob etwas nicht stimmt? –

+0

var output = document.getElementById ("Ausgabe"); document.getElementById ("btn1"). Onclick = function() { \t var a = neuer XMLHttpRequest(); \t a.onreadystatechange = function() { \t \t if (this.readyState == 4) { \t \t \t var myObj = this.responseText; \t \t} \t \t \t console.log (a); \t} \t a.open ("GET", "https://api.myjson.com/bins/z79bt", wahr); \t a.send(); }; –

+0

@ user7656142 'myObj' wird nur innerhalb des Funktionsumfangs leben. Sie protokollieren die Variable "a" anstelle von "myObj". – Shomz