Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Получение данных от PHP скрипта. (http://www.flasher.ru/forum/showthread.php?t=97704)

Loengreen 27.06.2007 18:07

Получение данных от PHP скрипта.
 
Здравствуйте!
Писал некогда рекламную игру на flash. Спустя некоторое время добавили вместе с php-программистом статистику для данной игры.
Недавно полетел комп и я случайно (:D) отформатировал жесткий диск. Файлы восстановить не удалось. Нашёл на почте старый исходник, в котором было всё, кроме пересылки значений. Начальник требует восстановить исходник дабы внести изменения. Всё сделал-написал, но есть одна проблема.
---------------------------
Собственно проблема.
---------------------------
Формирую запрос, который успешно принимается сервером, передаваемые мною данные заносятся в БД, а вот запрос (даные), который формируется для меня скриптом принять не могу. Пробовал использовать функции sendAndLoad и load. Обе возвращают значение true (передача прошла). Скрипт работает на 100% (висит рабочая swf-ка с игрой да и проверка в ручную (ввод запроса через адресную строку) свидетельствует об этом).
Пишу вроде всё как в прошлый раз. Возможно у меня проблемы с самим Macromedia Flash или с проектом? Пробовал создавать новый проект, писали php-скрипт, который просто выдавал мне переменную - то же самое. Обе функции не работают.
Мой запрос
Код:

var resultVars=new LoadVars();
var myLoadVars=new LoadVars();
myLoadVars.gametime=_global.gametime;
...
myLoadVars.score=10;
url="http://www.сайт.ru/папка/скрипт.php";
myLoadVars.sendAndLoad(url,resultVars,"GET");

Скрипт успешно принимает данные из объекта myLoadVars, но объект resultVars после передачи остается пуст. Пробовал передавать/принимать в один объект - то же самое, после выполнения функции sendAndLoad объект продолжает содержать лишь мой запрос.
Помогите! Начальник беснует! :(

P.S. Видел в сети такой вариант записи:
var myLoadVars:LoadVars=new LoadVars(); Результат тот же. :(

Kikasso 27.06.2007 18:15

а где resultVars.onLoad() ?

Loengreen 27.06.2007 18:30

Зачем? Это я тоже добавлял... но только для проверки прошла передача или нет.
Функция sendAndLoad передает и получает данные.
sendVar.sendAndLoad(url, loadVar, "GET (или POST)");
В результате выполнения этого запроса отправляются данные из объекта sendVar и принимаются данные в объект loadVar... Вроде так...
Или что то не так понимаю?
ВЫ не могли бы написать подробнее... что вы имели ввиду?

Kikasso 27.06.2007 19:53

sendAndLoad отправляет данные и указывает объект для приема.
onLoad вызывается, когда ответ приходит, или когда таймаут истекает.
Код:

resultVars.onLoad = function(ok){

ok ? trace(this.toString()) : trace('failed');

}


Loengreen 27.06.2007 20:23

Ну. Да.

Моя задача отправить серверу (скрипту) данные и получить от него необходимые переменные, которые я ему верну при следующей передачи.
При первой передачи мы определяем победа или поражение и отправляем всю статическую информацию. Во второй передаче содержатся выданное сервером кодовое слово и номер последней записи в БД (которые я получаю от серва при первой передачи). Разбиение на два этапа сделано для того, что бы учитывать и тех людей, которые после игры не стали вводить ИФО и просто закрыли окно.
Ваш код позволит мне только вывести на экран целиком весь объект или сообщение об ошибке. У меня другая проблема - ДАННЫЕ ПРОСТО НЕ ПРИНИМАЮТСЯ :(. Не приходят и всё. Или если я вставлю такой кусок кода всё будет ок?
Пошёл пробовать. :)

Kikasso 27.06.2007 20:49

В момент вашей проверки данных ещё нет. Этож не телепатия.

Loengreen 27.06.2007 21:21

Да! спасибо Вам огромное!
Сделал как вы сказали. Видимо сервер галимые или еще что-то, но ответа от php скрипта приходится ждать долго.
В связи с этим вопрос.
Для того что бы нормально принять переменные мне нужно написать так?
Код:

resultVars.onLoad = function(ok){
if (ok) {
  _global.id=resultVars.id;
  _dlobal.word=resultVars.word;
  } else { trace('failed'); }
}


Kikasso 27.06.2007 22:00

только не dlobal ))
Ну да. Пишите что угодно, onLoad вызывается когда переменные пришли.
Изнутри loadVars можно писать
Код:

_global.id = this.id;
И тегами [code] свой код обводите на форуме, вы в приличном месте. Изменить - расширеный - кнопка с решеткой.

etc 27.06.2007 23:20

Loengreen, отредактируйте свои посты и оформите код тегами [code][/code].

Loengreen 27.06.2007 23:22

Спасибо Вам огромное ещё раз! :)
Всё сделал, всё работает, дети рады, начальник успокоился. :)
Мне интересно, как я в прошлый раз без этой функции умудрился всё сделать? :)


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

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.