плагин simpleweatherjs js не обновляет новую температуру погоды, а вместо этого возвращает [object object]

#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 😉