Как сохранить значение в переменную из vk.api(...)

Обсуждение и помощь по вопросам взаимодействия с ВКонтакте API в IFrame-приложениях (JavaScript, PHP и т.д)
Ответить
akacuk21
Сообщения: 8
Зарегистрирован: 08 окт 2013, 10:56

Как сохранить значение в переменную из vk.api(...)

Сообщение akacuk21 »

Всем привет,

Пожалуйста объясните почему не получается записать значение в переменную city ? Бьюсь уже пол дня, ни в какую. В переменную ничего не сохраняется... Что я делаю не так? Спасибо.

Код: Выделить всё

 ...    var city;            VK.api("users.get", {uids:viewer_id,fields:"city"}, function(data) {        city = data.response[0].city;    });... 
sasha^
Сообщения: 711
Зарегистрирован: 10 сен 2012, 16:52

Re: Как сохранить значение в переменную из vk.api(...)

Сообщение sasha^ »

это должно быть число, потом database.getCitiesById и все....
akacuk21
Сообщения: 8
Зарегистрирован: 08 окт 2013, 10:56

Re: Как сохранить значение в переменную из vk.api(...)

Сообщение akacuk21 »

В том то и проблема, если использовать конструкцию следующего вида:

Код: Выделить всё

     var city_id;     VK.api("users.get", {uids:viewer_id,fields:"city, bdate"}, function(data) {        city_id = data.response[0].city;                bdate = data.response[0].bdate;    });     VK.api("getCities", {cids:city_id}, function(data) {        document.getElementById('user_info1').innerHTML =         data.response[0].cid + ' ' +         data.response[0].name + '<br />';    }); 
То функция getCities не работает, так как city_id пустое... Если вместо city_id вставить например '2' то покажет нормально, Санкт-Петербург. Следовательно делаю вывод что вторая функция рабочая, а вот в переменную city_id значения из первой функции не попадают... Почему ?
sasha^
Сообщения: 711
Зарегистрирован: 10 сен 2012, 16:52

Re: Как сохранить значение в переменную из vk.api(...)

Сообщение sasha^ »

при таком строении кода может и не работать.... ведь ajax-запрос асинхронный, а значит не известно какой из двух выполниться раньше.... потому еще, может, первый не выполниться, а второй уже просить данные о городе... сделай второй запрос в отдельную функцию, например, и ее вызывай после ответа с первого запроса...

примерно так:(не проверял...)

Код: Выделить всё

var city_id; VK.api("users.get", {uids:viewer_id,fields:"city, bdate"}, function(data) {    city_id = data.response[0].city;    getById();}); function getById() {    VK.api("getCities", {cids:city_id}, function(data) {        document.getElementById('user_info1').innerHTML =        data.response[0].cid + ' ' +        data.response[0].name + '<br />';    });}
akacuk21
Сообщения: 8
Зарегистрирован: 08 окт 2013, 10:56

Re: Как сохранить значение в переменную из vk.api(...)

Сообщение akacuk21 »

Хм, почему то теперь аж обе переменные недоступны) Пытался даже в функцию передавать значение, ни в какую... странно... может есть другой какой то способ? А то прямо засада
sasha^
Сообщения: 711
Зарегистрирован: 10 сен 2012, 16:52

Re: Как сохранить значение в переменную из vk.api(...)

Сообщение sasha^ »

akacuk21, database.getCitiesById - правильное название метода... я просто копипастнул у тебя функцию и доделал(не смотря заново ее)...
это должно быть число, потом database.getCitiesById и все....
вот... я же писал правильное название метода... можно было бы и заметить а не ждать ответа от других блин... и да... viewer_id существует и правилен? и еще... city_ids, а не cids..
а в ответе поля name и id...
неужели сложно глянуть?http://vk.com/dev/database.getCitiesById
Ответить