2016-03-25 3 views
0

Я получаю данные JSON от OpenWeatherAPI. Правильный формат для URL является

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

Где? Д = {город} & APPID = {} api_key

Пусть я предоставить URL добротность параметров, и APPID параметров. Я использую функцию $ .getJSON для извлечения данных JSON. Знает ли $ .getJSON, что URL-адреса отформатированы с помощью?, = И &, или мне нужно написать их с помощью моих собственных параметров? В настоящее время все, что я возвращаю, - localhost /?

Вот короткая программа, которую я написал. Хорошо прокомментировано, чтобы объяснить, как я ожидаю, что это сработает.

// 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); 

} 

Это html, на который ссылается JavaScript.

<!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> 

ответ

0

Да будет автоматически кодировать URL с? Д = weatherSearch & APPID = 33lkr3jlfj39asdflk

Просто переключите getJson в

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

вы имели период вместо запятой после url

Смотрите эту codepen с рабочим примером http://codepen.io/anon/pen/jqwPyQ

+0

да, но конкатенация строк в JavaScript не с '.' это с '+' -> 'url. params' на самом деле 'url + params' – Sabbin

+0

, он не может получить результат, поскольку ему нужен метод POST. –

+0

@KalpeshSingh, что совсем не правильно –

1

Try запятой "," точки вместо внесения ".":

$.getJSON(url, params, function(data) { 
    // Pass JSON data to showWeather function. 
     showWeather(data.items); 
     console.log(data.items); 
}); 
Смежные вопросы