![]() |
|
||||||||||
|
|||||
|
Регистрация: Oct 2010
Сообщений: 22
|
Учусь программированию поэтому сразу прошу прощения за глупый вопрос
в общем пытаюсь передать данные из as 3.0 в PHP связываюсь с БД скачиваю таблицу формирую файл на сервере и потом скачиваю его при помощи URLLoader. Всё работает, но мне не нравится тот факт, что я не знаю о времени окончания формирования файла, а как получить ответ от PHP не могу понять Привожу код из AS public class Download extends Object { // 1 Переменные класса private var request:URLRequest = new URLRequest();// адреса запросов private var loader:URLLoader=new URLLoader();// загрузчик для файла private var timer:Timer = new Timer(100,1);// задержка между повторной закачкой файла в случае неудачи private var urlVariables:URLVariables=new URLVariables();// url-переменная private var errorCounter:int = 0;// счётчик неудачных загрузок файла private var arrayDataOfTable:Array=new Array();// конечный массив скачиваемых данных public static var arrayData:Array=new Array();// конечный массив скачиваемых данных // 2 Конструктор класса public function Download(urlRequest:String, urlDownload:String, nameTable:String) { // формируем запрос к MySql для запуска серверного скрипта request.method = URLRequestMethod.POST; request.url=urlRequest; // в качестве параметра для серверного скрипта передаём название скачиваемой таблицы urlVariables.type = nameTable; request.data = urlVariables; // отсылаем запрос sendToURL(request); // формируем запрос для скачивания готового файла request.url = urlDownload; // даём серверу время на отработку startDownload(); // и ставим слушателей событий на завершение закачки или ошибку скачивания loader.addEventListener(Event.COMPLETE, compliteLoadListener); loader.addEventListener(IOErrorEvent.IO_ERROR, errorLoadListener); } // 3 Закрытые методы класса // 3.1 запускаем таймер на выдержку по окончании которой выполняем функцию загрузки файла private function startDownload() { timer.start(); timer.addEventListener(TimerEvent.TIMER, downloadFile); } // 3.2 Запускаем процесс скачивания файла private function downloadFile(e:TimerEvent):void { // в случае если скачивание было ошибочным менее 50 раз if (errorCounter < 50) { // увеличиваем значение счётчика неудачных загрузок errorCounter++; // посылаем команду загрузки файла loader.load(request); } else { // формируем действие клипа на отсутсвие связи с базой данных trace("не получилось скачать файл"); } } // 3.3 функция обработки скачанных данных private function compliteLoadListener(e:Event) { var string:String="";// строка для занисение в неё строки из скаченного файла var array:Array=new Array();// промежуточный массив для занесения подстрок будущено массива var i:int; // полученные данные заносим в строку string = loader.data; // и осуществляем формирование массива разделяя строки разделителем "~~" array = string.split("~~"); // в случае если последний элемнт полученного массива равен "endString" if (array[array.length - 1] == "endString") { // удаляем последний элемент array.pop(); }else{ // в противном случае формируем новую загрузку startDownload(); } // формируем двухмерный массов для помещения туда таблицы из БД for (i=0; i<array.length; i++) { arrayDataOfTable[i]=new Array(); arrayDataOfTable[i] = array[i].split("~"); } // заносим значение полученного массива в статическую переменную для возможности // обращения к нему из других точек кода arrayData=arrayDataOfTable; } // 3.4 функция обработки неудачной загрузки файла private function errorLoadListener(e:IOErrorEvent) { // инициализируем новую закачку startDownload(); } } }
как получить сообщение от PHP о завершении его работы |
|
|||||
|
Зачем вам вообще реальный файл? Отдавайте строку
вот это и есть ваши данные отданные флешке, все остальное лишнее. Вместо: Пишете: |
|
|||||
|
Регистрация: Oct 2010
Сообщений: 22
|
Жизнь прекрасна код выглядит немного по другому, но за идею просто огромное спасибо. Я над этой задачей биля месяц не мог ни где прочитать, а спрашивать стыдно блин.
Зато теперь всё станет совсем по другому Ещё раз спасибо |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:04. |
|
|
« Предыдущая тема | Следующая тема » |
|
|