Weather Underground 3-дневный прогноз ответа JSON возвращает неопределенное значение

Я разрабатываю погодное приложение, и у меня возникли проблемы с возвратом объекта данных прогноза на 3 дня. Он продолжает возвращаться undefined после моего синтаксического анализа.

Я дошел до того, что узнал, что он возвращает массив, но я все еще не могу получить доступ к объектам в этом массиве.

Все другие мои вызовы работают нормально, именно в этом фрагменте у меня проблемы:

var forecast = parsed_json['forecast']['txt_forecast']['forecastday'];

for (index in forecast) {
    console.log('Weather forecast for ' + forecast[index]['title'] +
        ' is ' + forecast[index]['fcttext_metric']);
}

Официальные документы: http://www.wunderground.com/weather/api/d/docs< /а>


person theGrizz    schedule 22.08.2015    source источник
comment
не используйте for ... in в массиве - попробуйте console.log(index) в цикле for ... in, чтобы понять, почему (скорее всего, вы не увидите ничего плохого, но если вы это сделаете, у вас будет ответ на вашу проблему)   -  person Jaromanda X    schedule 22.08.2015
comment
Он возвращает undefined или массив?   -  person reergymerej    schedule 22.08.2015
comment
также предпочтительнее использовать var forecast = parsed_json.forecast.txt_forecast.forecastday; и forecast[index].title и т. д., хотя это не имеет ничего общего с вашей проблемой.   -  person Jaromanda X    schedule 22.08.2015
comment
Он возвращает неопределенный, а не массив муравьев. @блурд   -  person theGrizz    schedule 22.08.2015
comment
Когда я регистрирую только индекс, он по-прежнему возвращает эту ошибку: Uncaught TypeError: Cannot read property 'txt_forecast' of undefined @JaromandaX   -  person theGrizz    schedule 22.08.2015
comment
forecast не определено? parsed_json не определено?   -  person azium    schedule 22.08.2015
comment
Посмотрите на вкладке сети, чтобы увидеть, что на самом деле принимается. Предоставьте это. Также может помочь проверить, как вы анализируете JSON.   -  person reergymerej    schedule 22.08.2015
comment
о, значит, данные не те, что вы ожидаете до цикла - моя ошибка   -  person Jaromanda X    schedule 22.08.2015
comment
Я могу ошибаться, но я думаю, что моя попытка проанализировать прогноз возвращает undefined и не позволяет анализу перейти к txt_forecast, а затем к прогнозу @azium.   -  person theGrizz    schedule 22.08.2015
comment
Ну проверить не сложно. перед любым кодом, который вы разместили console.log(parsed_json). каков результат этого?   -  person azium    schedule 22.08.2015
comment
Итак, похоже, что синтаксический анализ «прогноза» не передается в JSON — я получаю только «текущее наблюдение» и «местоположение» в своем ответе (это два других свойства, которые я запрашиваю).   -  person theGrizz    schedule 22.08.2015
comment
'current observation' and 'location' не являются частью ответа на вызов API прогноза в соответствии с документацией API - похоже, вы вообще не запрашиваете прогноз - можете ли вы показать запрос, который вы делаете?   -  person Jaromanda X    schedule 22.08.2015
comment
Вот с чем я работаю: jsfiddle.net/bsmith64/26LdLdcy Игнорировать код под ajax Звоните, это не имеет значения. @JaromandaX   -  person theGrizz    schedule 22.08.2015
comment
Запишите результат в консоль, чтобы вы могли его проверить. jsfiddle.net/reergymerej/26LdLdcy/1 Я сомневаюсь, что кто-либо может помочь вам проанализировать данные, если вы разместите это здесь.   -  person reergymerej    schedule 22.08.2015
comment
Object {response: Object, location: Object, current_observation: Object} Я подозревал, что возвращаются только местоположение и текущее наблюдение, но объясняет ли это неопределенный ответ? Спасибо, что провели меня через этот первый проект, работающий с JSON. @блурд   -  person theGrizz    schedule 22.08.2015
comment
but does that explain the undefined response - да, в parsed_json нет свойства forecast (т.е. это undefined ), поэтому ошибка возникает при попытке получить свойство undefined   -  person Jaromanda X    schedule 22.08.2015


Ответы (1)


Глядя на скрипту, которую вы опубликовали, ваш URL-адрес запроса НЕ включает прогноз - следовательно , прогноз не возвращается

url : "http://api.wunderground.com/api/.../geolookup/conditions/q/US/" + postCode +".json"

что, если бы вы использовали

url : "http://api.wunderground.com/api/.../geolookup/conditions/forecast/q/US/" + postCode +".json"

Я проверил выше, и это работает

person Jaromanda X    schedule 22.08.2015
comment
Да! Вы правы, это разрешило ответ «неопределенный». Мой ответ вернулся: Объект {ответ: Объект, местоположение: Объект, текущее_наблюдение: Объект, прогноз: Объект} WeatherScript.js:82 0 WeatherScript.js:82 1 WeatherScript.js:82 2 WeatherScript.js:82 3 WeatherScript.js :82 4 WeatherScript.js:82 5 WeatherScript.js:82 6 WeatherScript.js:82 7 Спасибо! @jaromandaX - person theGrizz; 22.08.2015