#javascript #jquery #weather-api
#javascript #jquery #погода-api
Вопрос:
Привет, я попробовал плагин от simpleweatherjs, я следил за примерами там и попытался взять пример геолокации и автоматического обновления, чтобы создать геолокацию, которая автоматически обновляется через несколько минут, скрипт работал нормально, пока не достиг установленного мной интервала, вместо этого он дает мне [Object Object] в результате
вот сценарий, который у меня есть
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<script src="jquery.simpleWeather.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
navigator.geolocation.getCurrentPosition(function(position) {
getWeather(position.coords.latitude ',' position.coords.longitude); //load weather using your lat/lng coordinates
});
});
$(function(){
getWeather();
setInterval(getWeather, 6000);
});
function getWeather(location, woeid) {
$.simpleWeather({
location: location,
woeid: woeid,
unit: 'c',
success: function(weather) {
html = '<h2>' weather.temp 'amp;deg;' weather.units.temp '</h2>';
html = '<ul><li>' weather.city ', ' weather.region '</li>';
html = '<li class="currently">' weather.currently '</li></ul>';
$("#weather").html(html);
},
error: function(error) {
$("#weather").html('<p>' error '</p>');
}
});
}
</script>
<div id="weather"></div>
может кто-нибудь, пожалуйста, проверьте мой код, если то, что я сделал, было неправильным? или я что-то здесь упускаю? пожалуйста, помогите мне, это сводит меня с ума
Комментарии:
1. Измените функцию ошибки на
$("#weather").html('<p>' JSON.stringify( error ) '</p>');
, и вы увидите сообщение об ошибке.
Ответ №1:
Вы вызываете getWeather
функцию из setInterval
функции, но эта функция ожидает передачи двух параметров, чего вы не делаете. Если вы перестроите свой код следующим образом, он будет работать:
<script type="text/javascript">
$(document).ready(function() {
getWeather();
setInterval(getWeather, 6000);
});
function getWeather() {
navigator.geolocation.getCurrentPosition(function(position) {
var location = (position.coords.latitude ',' position.coords.longitude);
var woeid = undefined;
$.simpleWeather({
location: location,
woeid: woeid,
unit: 'c',
success: function(weather) {
html = '<h2>' weather.temp 'amp;deg;' weather.units.temp '</h2>';
html = '<ul><li>' weather.city ', ' weather.region '</li>';
html = '<li class="currently">' weather.currently '</li></ul>';
$("#weather").html(html);
},
error: function(error) {
$("#weather").html('<p>' error '</p>');
}
});
});
}
</script>
<div id="weather"></div>
Вы можете убедиться в этом, перейдя к этому JSFiddle: http://jsfiddle.net/wdPA4 /
Комментарии:
1. Привет, я попробовал ваш код, но проблема в том, что он отлично работает в Chrome, но в Firefox каждые 6 секунд setInterval он выдает мне уведомление от firefox с просьбой поделиться своим местоположением. Решение, которое я мог бы придумать, — увеличить мой setInterval. может ли это сработать? или вы можете предложить другие варианты?
2. Что ж, похоже, это поведение Firefox по умолчанию, см. flooting.uservoice.com/knowledgebase/articles /. … Единственное решение заключается в том, что люди выбирают опцию «Всегда делиться местоположением».
3. Привет, я попробовал эту опцию, и теперь она не отображает плагин, хотя в Chrome он остается прежним
4. извините, я слишком разволновался, я снова попробовал ваш код в firefox .. он запрашивает мое текущее местоположение, но ничего не отображает
5. неважно, что это работает, проблема вчера была из-за firefox 😉