2017-07-11 4 views
0

Ich habe versucht, meine Hände auf einer einfachen Konsole App, die zwei Dinge tun wird. (1.) Es wird eine asynchrone Ajax-Anfrage machen. (2.) protokollieren Sie den responseText an der Konsole.responseText von Ajax (XMLHttpRequest) Anfrage ist undefined

Um dies zu tun, machte ich meine AJAX-Anfrage zu openweathermap.org und versuchte, den responseText zu JSON zu analysieren und schließlich auf der Konsole zu protokollieren.

Bitte unter meinem Code finden diese

var data ; 
var url = "http://api.openweathermap.org/data/2.5/weather?id=7535661&APPID=56104080d6cb412468dad1627cb27da6"; 

var myRequest; 

function sendRequest(url){ 
    myRequest = new XMLHttpRequest(); 
    myRequest.onreadystatechange= function(){ 
    if(myRequest.readyState == 4 && myRequest.status== 200){ 
     data= JSON.parse(myRequest.responseText); 

    } 
    myRequest.open("GET", url, true); 
    myRequest.send(); 
    } 
    console.log(data); 
    } 

sendRequest(url); 

Jedes Mal, wenn ich versuchen, diese laufen zu erreichen, ist es immer „undefiniert“ returing.

Bitte helfen Sie mir.

Antwort

2

Sie haben Ihre open() und send() Methoden in Ihrem onreadystatechange() Rückruf. Sie öffnen die Verbindung also nie, es sei denn, die Anfrage wird abgeschlossen. Versuchen Sie folgendes:

var data; 
var url = "http://api.openweathermap.org/data/2.5/weather?id=7535661&APPID=56104080d6cb412468dad1627cb27da6"; 

var myRequest; 

function sendRequest(url) { 
    myRequest = new XMLHttpRequest(); 
    myRequest.onreadystatechange = function() { 
    if (myRequest.readyState == 4 && myRequest.status == 200) { 
     data = JSON.parse(myRequest.responseText); 
     console.log(data); 
    } 
    } 
    myRequest.open("GET", url, true); 
    myRequest.send(); 
} 

sendRequest(url); 
+0

Ich schätze Ihre Bemühungen aber das „undefiniert“ noch andauert .. – OlatunjiYSO

+0

ich nicht undefiniert, aber die eigentliche Information als ein Objekt in der Konsole angezeigt, sieht folgendermaßen aus: http: // jsfiddle .net/1xn7dt6k/2/ Beachten Sie, dass dieser Endpunkt, den Sie treffen, kein sicherer Endpunkt (HTTP) ist. Daher können Sie diese Anforderung nicht ausführen, wenn Sie diesen Code von einem HTTPS aus bereitstellen Seite, ohne Mixed-Content aktiviert. – clint

+0

Danke Cint, ich werde das testen und Feedback geben. – OlatunjiYSO

Verwandte Themen