![]() |
|
||||||||||
|
|||||
|
Регистрация: Mar 2011
Сообщений: 11
|
Здравствуйте. В документации к классу APIconnection вконтакте написано:
Цитата:
function fetchUserBalance (data:Object): void { trace("1234"); } function onApiRequestFail (data: Object): void { trace("error"); } VK.api('getUserBalance', { }, fetchUserBalance, onApiRequestFail); Цитата:
но каким образом? Функция "fetchUserBalance" ведь не выполняется Есть еще одни вопрос, связанный с порядком выполнения функций, вопрос в этом сообщении Последний раз редактировалось ghqe; 30.03.2011 в 20:01. |
|
|||||
|
Регистрация: May 2010
Сообщений: 543
|
ответ приходит в формате JSON, поставьте в параметре формат ответа XML, чтобы обрабатывать его так:
иначе разбирайте JSON. Цитата:
А лучше почитайте Колина Мука |
|
|||||
|
Регистрация: Mar 2011
Сообщений: 11
|
Цитата:
Но весь прикол в том, что аналогичная функция срабатывает =) function fetchUserId (data:Object):String { for (var key:String in data[0]) { UserId = String(data[0]['uid']); trace(UserId); } } VK.api('getProfiles', { uids: flashVars['viewer_id'] }, fetchUserId, onApiRequestFail); Еще у меня есть вопрос, связанный с порядком выполнения функций Есть код: function fetchUserId (data:Object):String { for (var key:String in data[0]) { UserId = String(data[0]['uid']); trace(UserId); } } VK.api('getProfiles', { uids: flashVars['viewer_id'] }, fetchUserId, onApiRequestFail); // (1) trace(UserId); // (2) trace("------------------------------------------------------------"); // (3) Цитата:
Последний раз редактировалось ghqe; 30.03.2011 в 19:57. |
|
|||||
|
Регистрация: May 2010
Сообщений: 543
|
Цитата:
с помощью метода api() вы посылаете запрос на сервер вконтакте с целой кучей параметров. Если сервер обработал ваш запрос, то вы получите ответ в любом случае. если запрос был составлен корректно, вы получите объект data, содержащий ответ сервера и сработает callback-функция fetchUserId, в которую параметром будет передан ответ сервера. Если запрос составлен некорректно, то вы опять получите ответ от сервера, содержащий данные об ошибке, и сработает callback onApiRequestFail. и неважно что у вас там одна строчка trace("что-то там") по второму вопросу actionscript выполняется быстрее, чем приходит ответ от сервера. на строке [1] компилятор не будет ждать пока соображает удаленный сервер, а начнет выполнять код дальше. |
|
|||||
|
Регистрация: Mar 2011
Сообщений: 11
|
Спасибо, правда я по первому вопросу имел ввиду немного другое. Ну ладно, это вроде бы не так важно.
А как посоветуете решить вопрос с ответом от сервера? Как узнать что ответ получен и выполнять код дальше? Последний раз редактировалось ghqe; 30.03.2011 в 21:37. |
|
|||||
|
Регистрация: May 2010
Сообщений: 543
|
ну в принципе я уже ответил на этот вопрос.
в данном случае для вас единственным сигналом, что пришел ответ для сервера, является срабатывание callback-функции. По самому первому сообщению складывается, что у вас смутное представление, что это такое. Вкратце выглядит это так. Дело в том, что в переменную можно записать ссылку на функцию, и вызывать функцию через эту переменную. пример callback'a //... myFunction(showMessage); // вызываем функцию myFunction, в параметре ссылка на callback //... private function myFunction(callback:Function){ callback("Я вызываю callback"); // вызываем функцию переданную в качестве параметра } private function showMessage(msg:String):void{ trace(msg); } Чтобы понять что пришел ответ можно поступить примерно так: VK.api('getProfiles', {some_params}, onComplete, onError) private function onComplete(data:Object){ trace("Сервер прислал мне ответ"); trace(data); // дальше разбираем ответ и продолжаем делать то, что нужно. } private function onError(data:Object){ trace("Ошибка запроса. Вот ответ сервера"); trace(data); } |
|
|||||
|
Регистрация: Mar 2011
Сообщений: 11
|
Ясно, спасибо
Добавлено через 44 минуты Вот только почему не выполняется этот код я не понял VK.api('getUserBalance', { }, nm, onApiRequestFail); function nm (data:Object): void { trace("12121212121"); // этой строки нет в output for (var key:String in data[0]) { trace(data[0]['response']); } } function onApiRequestFail (data: Object): void { trace("error"); } Цитата:
|
|
|||||
|
Регистрация: May 2010
Сообщений: 543
|
посмотри метод api, нет ли там trace
|
|
|||||
|
Регистрация: Mar 2011
Сообщений: 11
|
Нет, нету.
В output почему-то всегда ответ сервера показывается, даже если нигде нет trace. Вот например, обрабатываем ответ таким образом: Но при этом в output бедет всеравно показыватся кроме trace(UserId) еще и весь ответ от сервера, т.е. в output будет следующее Цитата:
|
|
|||||
|
Регистрация: May 2010
Сообщений: 543
|
vk/api/DataProvider.as
Цитата:
постарайтесь изучить всё повнимательней. А лучше почитайте Колина Мука Последний раз редактировалось carrotoff; 01.04.2011 в 18:39. |
![]() |
![]() |
Часовой пояс GMT +4, время: 02:28. |
|
|
« Предыдущая тема | Следующая тема » |
|
|