2016-06-10 29 views
0

Hallo Ich bin buliding meine erste Web-App mit Javascript und Abrufen von Daten mit API von www.openweathermap.org/ Ich habe den API-Schlüssel verwendet Wie in der Dokumentation erwähnt, gibt es immer noch einen Fehler der Unautorisierung. Kann es einen anderen Grund für diesen Fehler beim Aufruf einer Funktion oder so geben. Vielen Dank im Voraus.Fehler 401: nicht autorisiert, auch nach der Verwendung von API-Schlüssel während der Verwendung von www.openweathermap.org

var APPID = "my_secret_key"; 
    var temp; 
    var loc; 
    var icon; 
    var wind; 
    var humidity; 
    var direction; 
    function updateByZip(zip){ 
     var url = "http://api.openweathermap.org/data/2.5/weather?" + 
       "zip = " + zip + 
       "&APPID =" + APPID ; 
    sendRequest(url); 
    } 

    function sendRequest(url){ 
     var xmlhttp = new XMLHttpRequest(); 
     xmlhttp.onreadystatechange = function(){ 
     if(xmlhttp.readyState == 4 && xmlhttp.status == 200){ 
     var data = JSON.parse(xmlhttp.responseText) ; 
     var weather = {}; 
     weather.wind = data.wind.speed; 
     weather.direction = data.wind.deg; 
     weather.loc = data.name; 
     weather.temp = data.main.temp; 
     weather.icon = data.weather[0].id; 
     weather.humidity=data.main.humidity; 
     update(weather); 
     } 
     }; 
     xmlhttp.open("GET", url, true); 
     xmlhttp.send(); 
     } 
+0

Die URL in einem Browser zu setzen funktioniert gut. Was macht 'sendRequest' genau? vielleicht schickt es es versehentlich POST? –

+0

Sendeanfrage sendet eine Anfrage zum Empfang von Wetterdaten. Ich kann den Code hinzufügen, wenn Sie möchten. Auch ich habe "GET" verwendet –

+0

Ich glaube, Sie haben ein CROS-Problem. Das letzte Mal, als ich versuchte, Daten von OpenWeatherMap zu holen, funktionierte es nicht. (Ich fand das [Geige] (http://jsfiddle.net/rover/HWAFG/) und die Konsole zeigt einen [CORS-Fehler] (http://i.imgur.com/QXKayKz.png). – Tico

Antwort

1

Es sind die Leerzeichen in der Nähe der Gleichheitszeichen in Ihrer URL. Es wird wahrscheinlich den Speicherplatz urlencodieren und Ihren Parameter als APPID%20 senden, der nicht als gültig erkannt wird.

var url = "http://api.openweathermap.org/data/2.5/weather?" + 
      "zip=" + zip + 
      "&APPID=" + APPID; 
+0

ja das hat funktioniert gut !! Danke !! obwohl es noch ein Fehler in meiner Funktion gibt, werde ich es überprüfen. –

Verwandte Themen