Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   обработка $.getJSON с возвращением словаря (https://javascript.ru/forum/jquery/37333-obrabotka-%24-getjson-s-vozvrashheniem-slovarya.html)

Dr.Livsi 16.04.2013 09:24

обработка $.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"

skrudjmakdak 16.04.2013 11:30

какой браузер? используйте хром. там есть встроенный фаербаг (f12, для просмотра/открытия)
и где вы используйте alert, измените на console.log(result) и смотрите в фаербаге что он выдаст (вкладка console)

bret 16.04.2013 11:30

Проверьте синтаксис
jQuery.getJSON

skrudjmakdak 16.04.2013 14:12

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

skrudjmakdak 16.04.2013 17:10

ммм... если не знайте js откуда карма 125???)) (если не секрет)

Hekumok 16.04.2013 17:19

Цитата:

Сообщение от skrudjmakdak
откуда карма 125???))

Наплодил мультов и проплюсовал себя)) лол

SkyLight 16.04.2013 22:45

Цитата:

Сообщение от skrudjmakdak
и что что оно асинхронное?

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

Dr.Livsi 16.04.2013 22:57

Всем спасибо, особенно nasqad за то, что образумил и остановил это безумие (2 дня мучался :) ). После этого сообщения: "да вы наркоманы оно же ассинхронное" за 5 минут нашел новое решение.

skrudjmakdak 17.04.2013 08:48

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

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


Часовой пояс GMT +3, время: 14:53.