отображение данных о погоде в разных городах с помощью openweathermap

Я создал виджет погоды для своего сайта, используя openweathermap. JS и html -- Скрипт на странице main.html -->

$(function() {

    $('.weather-temperature').openWeather({
        city: 'Dhaka, BD',
        descriptionTarget: '.weather-description',
        windSpeedTarget: '.weather-wind-speed',
        minTemperatureTarget: '.weather-min-temperature',
        maxTemperatureTarget: '.weather-max-temperature',
        humidityTarget: '.weather-humidity',
        sunriseTarget: '.weather-sunrise',
        sunsetTarget: '.weather-sunset',
        placeTarget: '.weather-place',
        iconTarget: '.weather-icon',
        customIcons: 'images/icons/weather/',
        success: function() {

            //show weather
            $('.weather-wrapper').show();

        },
        error: function(message) {

            console.log(message);

        }
    });

}); 

HTML -->/*

                                <div class="weather-wrapper hide">
            <select id='list'>
                    <option value='Dhaka,BD'>Dhaka</option>
                    <option value='Pabna,BD'>Pabna</option>
            </select>

            <img src="" class="weather-icon" alt="Weather Icon" />

            <p><strong>Place</strong>
            <br /><span class="weather-place"></span></p>

            <p><strong>Temperature</strong>
            <br /><span class="weather-temperature"></span> (<span class="weather-min-temperature"></span> - <span class="weather-max-temperature"></span>)</p>

            <p><strong>Description</strong>
            <br /><span class="weather-description capitalize"></span></p>

            <p><strong>Humidity</strong>
            <br /><span class="weather-humidity"></span></p>

            <p><strong>Wind speed</strong>
            <br /><span class="weather-wind-speed"></span></p>

            <p><strong>Sunrise</strong>
            <br /><span class="weather-sunrise"></span></p>

            <p><strong>Sunset</strong>
            <br /><span class="weather-sunset"></span></p>

        </div>      */

Без какой-либо опции «выбрать» он работает правильно для города «Дакка». Я хочу изменить название города, используя опцию выбора, и показать измененные данные о погоде. Я пробовал ------

     /*
      var loc;
         $('#list').change(function() {
         loc = $('#list').val();
         $('.weather-temperature').openWeather({
           city: "' + loc + '",
            //etc.
      */

Вот код openweather.js -----

    /*
      ;(function($) {

$.fn.openWeather  = function(options) {

    //return if no element was bound
    //so chained events can continue
    if(!this.length) { 
        return this; 
    }

    //define default parameters
    var defaults = {
        descriptionTarget: null,
        maxTemperatureTarget: null,
        minTemperatureTarget: null,
        windSpeedTarget: null,
        humidityTarget: null,
        sunriseTarget: null,
        sunsetTarget: null,
        placeTarget: null,
        iconTarget: null,
        customIcons: null,
        units: 'c',
        city: null,
        lat: null,
        lng: null,
        key: null,
        success: function() {},
        error: function(message) {} 
    }

    //define plugin
    var plugin = this;

    //define element
    var el = $(this);

    //api URL
    var apiURL;

    //define settings
    plugin.settings = {}

    //merge defaults and options
    plugin.settings = $.extend({}, defaults, options);

    //if city isn't null
    if(plugin.settings.city != null) {

       //define API url using city (and remove any spaces in city)
       apiURL = 'http://api.openweathermap.org/data/2.5/weather?q='+plugin.settings.city.replace('', '');

    } else if(plugin.settings.lat != null && plugin.settings.lng != null) {

       //define API url using lat and lng
       apiURL = 'http://api.openweathermap.org/data/2.5/weather?lat='+plugin.settings.lat+'&lon='+plugin.settings.lng;
    }

    if(plugin.settings.key != null) {

        apiURL += '&APPID=' + plugin.settings.key;

    }

 etc....
  */

Я действительно извиняюсь за это длинное письмо. Эта проблема меня сильно мучает, а я не профессиональный кодер. Так что, пожалуйста, помогите мне избавиться от этой проблемы.


person demo_Ashif    schedule 09.12.2013    source источник
comment
Это может быть так просто: в вашем рабочем примере название города — Дакка, BD, но в раскрывающемся списке значение — просто Дакка. Возможно, ему нужен код страны?   -  person Jacob Mattison    schedule 09.12.2013
comment
используя «Dhaka, BD», он работает правильно, но только для этого города. И, пожалуйста, посмотрите код под названием «Я пробовал».   -  person demo_Ashif    schedule 09.12.2013
comment
city: "' + loc + '", вы дублируете кавычки (одинарные кавычки внутри двойных кавычек)   -  person Einacio    schedule 09.12.2013


Ответы (1)


поменяй city: "' + loc + '", на city:loc, и должно работать

person Einacio    schedule 09.12.2013