2016-03-25 8 views
0

Ich greife von OpenWeatherAPI auf JSON-Daten zu. Eine richtige Format für die URL ist

http://api.openweathermap.org/data/2.5/weather?q=Chicago&APPID=34lkj349gga9s8dug9sd8hg

Wo? Q = {city} & APPID = {api_key}

Angenommen, liefere ich die URL, die q param und die APPID param. Ich verwende die $ .getJSON-Funktionalität, um die JSON-Daten abzurufen. Kennt $ .getJSON, dass URLs mit?, = Und & formatiert sind oder muss ich diese mit meinen eigenen Parametern schreiben? Momentan komme ich nur mit localhost /?

Hier ist das kurze Programm, das ich geschrieben habe. Es ist gut kommentiert zu erklären, wie ich es erwarte, dass es funktioniert.

// Here is how the final url should look: 
    // api.openweathermap.org/data/2.5/weather?q=Chicago&APPID=33lkr3jlfj39asdflk 

var weatherSearch = ''; 
    // weather-search is my html form id. On submit, send the input 
    // (which is city name) to the function getWeather. 
$('#weather-search').submit(function(event) { 
weatherSearch = $('#weatherQuery').val(); 
event.preventDefault(); 
getWeather(weatherSearch); 
}); 

    // getWeather has params q (city name), and APPID (API key). 
function getWeather(weatherSearch) { 
var params = { 
     q: weatherSearch, 
     APPID: '33lkr3jlfj39asdflk' 
}; 
    // This is the url that goes before the params. 
url = 'http://api.openweathermap.org/data/2.5/weather/'; 
    // Request data using url and params above. 
    // Does $.getJSON format the url properly? 
$.getJSON(url. params, function(data) { 
    // Pass JSON data to showWeather function. 
     showWeather(data.items); 
     console.log(data.items); 
}); 
} 

function showWeather(weather) { 
    // Show JSON data (weather) in html div id="weatherResults" 
$('#weatherResults').html(weather); 

} 

Dies ist der HTML-Code, auf den JavaScript verweist.

<!DOCTYPE html> 
<html> 
<head> 
<meta charset="utf-8"> 
<title>weather</title> 
<script src="/jquery.js"></script> 
<script src="openweather.js"></script> 
</head> 
<body> 

<form id="weather-search"> 
<input type="text" id="weatherQuery"></input> 
<input type="submit" value="Submit"></input> 
</form> 

<div id="weatherResults"> 
</div> 

Antwort

0

Ja, es wird automatisch die URL kodieren mit? Q = Wettersuche & APPID = 33lkr3jlfj39asdflk

schalten Sie Ihre getJSON zu

$.getJSON(url, params, function(data) { 
    // Pass JSON data to showWeather function. 
     showWeather(data.items); 
     console.log(data.items); 
}); 

Sie hatten einen Zeitraum anstelle von Komma nach url

Sehen Sie diese codepen mit einem Arbeitsbeispiel http://codepen.io/anon/pen/jqwPyQ

+0

ja, aber Strings in Javascript verketten ist nicht mit '.' Es ist mit '+' -> 'URL. params' ist eigentlich 'url + params' – Sabbin

+0

er kann Ergebnis nicht abrufen, da es POST-Methode erfordert. –

+0

@KalpeshSingh das ist überhaupt nicht korrekt –

1

Versuchen Komma "," instad von dot ".":

$.getJSON(url, params, function(data) { 
    // Pass JSON data to showWeather function. 
     showWeather(data.items); 
     console.log(data.items); 
});