Страница 1 из 1

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

Добавлено: 19 окт 2013, 16:36
akacuk21
Всем привет,

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

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

 ...    var city;            VK.api("users.get", {uids:viewer_id,fields:"city"}, function(data) {        city = data.response[0].city;    });... 

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

Добавлено: 19 окт 2013, 19:11
sasha^
это должно быть число, потом database.getCitiesById и все....

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

Добавлено: 20 окт 2013, 10:47
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 значения из первой функции не попадают... Почему ?

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

Добавлено: 20 окт 2013, 11:27
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 />';    });}

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

Добавлено: 23 окт 2013, 09:16
akacuk21
Хм, почему то теперь аж обе переменные недоступны) Пытался даже в функцию передавать значение, ни в какую... странно... может есть другой какой то способ? А то прямо засада

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

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