Создание базы пользователей приложения и ведение статистики

Только готовые уроки по использованию ВКонтакте API. Flash + PHP + API. НЕ IFrame!
agni
Сообщения: 100
Зарегистрирован: 07 июн 2010, 11:04

Re: Создание базы пользователей приложения и ведение статистики

Сообщение agni »

хочу получить ответ php файла,
вот этот, в 27 строке Вашего php файла:
27. echo "OK";
немного изменил код

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

package {    import flash.net.*;    import flash.display.*;    import flash.text.*;    import flash.events.*;     public class Main extends Sprite    {        public function Main():void        {            // создание запроса            var stat_loader:URLLoader = new URLLoader  ;            var stat_request:URLRequest = new URLRequest("http://адрес");            stat_request.method = URLRequestMethod.POST;             // добавление параметров в запрос            var stat_vars:URLVariables = new URLVariables  ;            stat_vars['auth_key'] = LoaderInfo(root.loaderInfo).parameters.auth_key;            stat_vars['viewer_id'] = LoaderInfo(root.loaderInfo).parameters.viewer_id;            stat_request.data = stat_vars;            // выполнение запроса            stat_loader.load(stat_request);            stat_loader.addEventListener(Event.COMPLETE, stat_loader_fin);        }        function stat_loader_fin(e:Event):void        {            var pole_txt:TextField = new TextField  ;            var loader:URLLoader = URLLoader(e.target);            var answer = new URLVariables(loader.data).success;            pole_txt.x = 100;            pole_txt.y = 25;            pole_txt.text = answer;            addChild(pole_txt);        }     }}
не работает, что не так делаю? :(
Аватара пользователя
bodnar
Модератор
Модератор
Сообщения: 1399
Зарегистрирован: 03 апр 2010, 06:41

Re: Создание базы пользователей приложения и ведение статистики

Сообщение bodnar »

Вы php изменяли? Эта строчка
agni писал(а):

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

var answer = new URLVariables(loader.data).success;
будет работать если в php выводится что-то вроде
"success=значение&parameter=value&..."

Просто распечатать ответ можно как то так:

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

pole_txt.test=loader.data;
agni
Сообщения: 100
Зарегистрирован: 07 июн 2010, 11:04

Re: Создание базы пользователей приложения и ведение статистики

Сообщение agni »

php не изменял
только AS

функция stat_loader_fin почему то не вызывается :(
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Создание базы пользователей приложения и ведение статистики

Сообщение Александр »

agni писал(а):php не изменялтолько AS
Если менять код AS, с целью обработать ответ другим способом, нужно и этот ответ выдать нужным образом.
Точно функция не вызывается? Или кажется что не вызывается?
Проверь что ссылка к скрипту верна. Создай на сцене поле result_tf и в функции stat_loader_fin что-нибудь выведи в этом поле, например:

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

result_tf.text='111';
Пробуй самостоятельно отлавливать момент, когда в приложении что-то идёт не так как надо.
agni
Сообщения: 100
Зарегистрирован: 07 июн 2010, 11:04

Re: Создание базы пользователей приложения и ведение статистики

Сообщение agni »

Александр писал(а):
agni писал(а):php не изменялтолько AS
Если менять код AS, с целью обработать ответ другим способом, нужно и этот ответ выдать нужным образом.
Точно функция не вызывается? Или кажется что не вызывается?
Проверь что ссылка к скрипту верна. Создай на сцене поле result_tf и в функции stat_loader_fin что-нибудь выведи в этом поле, например:

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

result_tf.text='111';
Пробуй самостоятельно отлавливать момент, когда в приложении что-то идёт не так как надо.
приложение работает, в БД строки меняет, счётчик увеличивает

вывод, что не работает, делаю в связи с тем, что следующий код (строка 33) в поле pole_txt.text ничего не выводит:

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

package{    import flash.net.*;    import flash.display.*;    import flash.text.*;    import flash.events.*;     public class Main extends Sprite    {        public function Main():void        {            // создание запроса            var stat_loader:URLLoader = new URLLoader  ;            var stat_request:URLRequest = new URLRequest("http://адрес");            stat_request.method = URLRequestMethod.POST;             // добавление параметров в запрос            var stat_vars:URLVariables = new URLVariables  ;            stat_vars['auth_key'] = LoaderInfo(root.loaderInfo).parameters.auth_key;            stat_vars['viewer_id'] = LoaderInfo(root.loaderInfo).parameters.viewer_id;            stat_request.data = stat_vars;            // выполнение запроса            stat_loader.load(stat_request);            stat_loader.addEventListener(Event.COMPLETE, stat_loader_fin);        }        function stat_loader_fin(e:Event):void        {            var pole_txt:TextField = new TextField  ;            var loader:URLLoader = URLLoader(e.target);            var answer = new URLVariables(loader.data).success;            pole_txt.x = 100;            pole_txt.y = 25;            pole_txt.text = 'РАБОТАЙ ДАВАЙ'; // я так понимаю должен работать в любом случае            addChild(pole_txt);        } 
какая-то тупая ошибка где-то :oops:
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Создание базы пользователей приложения и ведение статистики

Сообщение Александр »

agni
Ну так пробуй, тестируй. Тестируй не загружая в контакт, меняя что-то в коде, чтобы найти в какой строчке появляется ошибка. Смотри в окно вывода. Если ты будешь ждать что кто-то тебе поможет с таким, то это ожидание может быть очень долгим. Готов ждать очень долго, не пытаясь разобраться самостоятельно? Это плохой вариант...
Я вставил твой код в приложение и увидел:

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

Error: Error #2101: Строка, переданная в URLVariables.decode(), должна быть строкой запроса закодированного URL-адреса и содержать пары имя/значение.    at Error$/throwError()    at flash.net::URLVariables/decode()    at flash.net::URLVariables()    at Untitled_fla::MainTimeline/stat_loader_fin()    at flash.events::EventDispatcher/dispatchEventFunction()    at flash.events::EventDispatcher/dispatchEvent()    at flash.net::URLLoader/onComplete() 
Закомментировал

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

// var answer = new URLVariables(loader.data).success;
и

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

pole_txt.text = 'РАБОТАЙ ДАВАЙ';
стало выводить текст! А следовательно твоё утверждение, что "функция stat_loader_fin почему то не вызывается" - не верно. То есть ты заведомо даешь неверное описание, тому кто мог бы тебе подсказать.

Приложение останавливалось на строке, которая не смогла верно обработаться.
Реши, хочешь ты использовать ту строку или выводить ответ другим способом, который написал bodnar.
Если хочешь делать так:

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

URLVariables(loader.data).success
то разберись как этим правильно пользоваться. А об этом bodnar тоже уже написал.
agni
Сообщения: 100
Зарегистрирован: 07 июн 2010, 11:04

Re: Создание базы пользователей приложения и ведение статистики

Сообщение agni »

функция все-таки вызывается
если вывод текста делать в самом начале - текстовое поле создаётся
если вывод делать после объявления:
var loader:URLLoader = URLLoader(e.target); - текстовое поле создаётся

не работает строка:
var answer = new URLVariables(loader.data).success;
и всё что записано в функции после этой строки :shock:
agni
Сообщения: 100
Зарегистрирован: 07 июн 2010, 11:04

Re: Создание базы пользователей приложения и ведение статистики

Сообщение agni »

пока писал - уже ответили, спасибо :)
Аватара пользователя
Александр
Создатель сайта
Создатель сайта
Сообщения: 4574
Зарегистрирован: 27 сен 2009, 16:45

Re: Создание базы пользователей приложения и ведение статистики

Сообщение Александр »

Вот это ответ, чтобы всё заработало, без изменений последнего варианта AS кода.
bodnar писал(а):будет работать если в php выводится что-то вроде"success=значение&parameter=value&..."
agni
Сообщения: 100
Зарегистрирован: 07 июн 2010, 11:04

Re: Создание базы пользователей приложения и ведение статистики

Сообщение agni »

заменил

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

echo  "OK";
на

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

$qtData="success=$table_name";     echo $qtData;
все работает

php написанные под AS2 работают и для AS3
Ответить