Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.04.2013, 09:24
Интересующийся
Отправить личное сообщение для Dr.Livsi Посмотреть профиль Найти все сообщения от Dr.Livsi
 
Регистрация: 26.07.2011
Сообщений: 11

обработка $.getJSON с возвращением словаря
Добрый день!
Второй день ломаю голову над следующей проблемой:
есть json-данные, представленные в виде ассоциативного массива:
{"BE": 7, "FR": 2, "BG": 7, "DK": 7, "HR": 7, "DE": 7, "BA": 7, "HU": 4, "FI": 7, "GR": 4, "NL": 7, "PT": 7, "NO": 7, "TR": 7, "LI": 7, "LV": 7, "LT": 7, "LU": 7, "RO": 7, "PL": 7, "CH": 7, "AD": 7, "EE": 7, "IS": 7, "AL": 7, "IT": 7, "CZ": 7, "CY": 7, "AT": 3, "IE": 7, "ES": 7, "ME": 7, "MC": 2, "RS": 7, "MK": 7, "SK": 7, "MT": 7, "SI": 3, "SM": 7, "SE": 7, "GB": 7}
Есть функция, которая должна принять эти данные (использую $.getJSON) и вернуть одно из значений по ключу "country_code", передаваемому в параметрах функции, для последующего использования. Однако функция возвращает underfined. Не могу понять в чем дело.
Вот мой код:
function get_country_data(country_code){
var result;
result=$.getJSON('geo/countries-data/');
return result[country_code];
}
При этом, alert(result) возвращает "Object object"
Ответить с цитированием
  #2 (permalink)  
Старый 16.04.2013, 11:30
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

какой браузер? используйте хром. там есть встроенный фаербаг (f12, для просмотра/открытия)
и где вы используйте alert, измените на console.log(result) и смотрите в фаербаге что он выдаст (вкладка console)
Ответить с цитированием
  #3 (permalink)  
Старый 16.04.2013, 11:30
Аватар для bret
Кандидат Javascript-наук
Отправить личное сообщение для bret Посмотреть профиль Найти все сообщения от bret
 
Регистрация: 04.10.2008
Сообщений: 128

Проверьте синтаксис
jQuery.getJSON
__________________
я подыскиваю мозг... твой подойдёт
Ответить с цитированием
  #4 (permalink)  
Старый 16.04.2013, 14:12
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

и что что оно асинхронное? так же можно создать глобальную переменную, туда пихать ответ и вывести в консоль. причем прям в консоли прописать имя переменной и он выведет ответ. nasqad, в чем здесь наркомания то?
Ответить с цитированием
  #5 (permalink)  
Старый 16.04.2013, 17:10
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

ммм... если не знайте js откуда карма 125???)) (если не секрет)
Ответить с цитированием
  #6 (permalink)  
Старый 16.04.2013, 17:19
Аватар для Hekumok
Отправить личное сообщение для Hekumok Посмотреть профиль Найти все сообщения от Hekumok
 
Регистрация: 04.06.2012
Сообщений: 513

Сообщение от skrudjmakdak
откуда карма 125???))
Наплодил мультов и проплюсовал себя)) лол
__________________
★ ²º¹³ ☆
Ответить с цитированием
  #7 (permalink)  
Старый 16.04.2013, 22:45
Аватар для SkyLight
Злюка-бобер
Отправить личное сообщение для SkyLight Посмотреть профиль Найти все сообщения от SkyLight
 
Регистрация: 21.03.2010
Сообщений: 438

Сообщение от skrudjmakdak
и что что оно асинхронное?
А то, что пока идет запрос, код продолжает выполняться. То, что вы в консоли увидели объект - это хорошо. Но с чего вы взяли, что это тот самый объект, который вы получили с сервера? В jQuery методы работы с AJAX возвращают специальный объект, а не результат, полученный с сервера. В общем, внимательно перечитайте документацию.
__________________
In WEB We Trust
У всех есть своя темная сторона...

Последний раз редактировалось SkyLight, 16.04.2013 в 22:47.
Ответить с цитированием
  #8 (permalink)  
Старый 16.04.2013, 22:57
Интересующийся
Отправить личное сообщение для Dr.Livsi Посмотреть профиль Найти все сообщения от Dr.Livsi
 
Регистрация: 26.07.2011
Сообщений: 11

Всем спасибо, особенно nasqad за то, что образумил и остановил это безумие (2 дня мучался ). После этого сообщения: "да вы наркоманы оно же ассинхронное" за 5 минут нашел новое решение.
Ответить с цитированием
  #9 (permalink)  
Старый 17.04.2013, 08:48
Профессор
Отправить личное сообщение для skrudjmakdak Посмотреть профиль Найти все сообщения от skrudjmakdak
 
Регистрация: 27.04.2012
Сообщений: 1,410

SkyLight, читайте внимательней! глобальная переменная. туда пишется результат. а в консоль выводить после того как пришел ответ. вывести можно вбив в консоль имя переменной. в чем проблема??

так же можно сделать через settimeout. у меня всегда работало и работает)))
просто через алерт не увидите иерархию объекта, а бывает ой как надо
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка нажатия на элемент и его родитель klev2004 Общие вопросы Javascript 3 12.12.2012 20:07