Просмотр полной версии : как определить ошибку при loadVariables
joker2k1
30.01.2002, 00:32
Господа,
подскажите как определить случай ошибки loadVariables
например нет такого адреса
или адрес не отвечает.
С уважением
Евгений
Novikoff
30.01.2002, 23:24
попробуй грузить контрольную переменную и проверять в муве ее наличие - если есть - то все ок,а если нет ...........
onClipEvent (data) {
}
data - Инициализация команд при получении данных в командах loadVariables или loadMovie. Когда это связано с командой loadVariables, событие data происходит только один раз в момент окончания загрузки последней переменной. При использовании команды loadMovie, событие data может быть многократным, по мере подхода новых данных.
joker2k1
31.01.2002, 18:54
да я не про это.
я про то что например укажу я loadVaribales("index.php".....);
а такого файла нет?
и как эту ситуацию отловить во flash что бы окно с ошибкой вывести???
я вижу выход один тока по таймауту.
вот и спрашиваю есть еще какие идеи или механизмы на этот счет?
можно заменить дефолтовую страницу ошибки на сервере, своей, начинающейся с error=1& а дальше текст для броузера. Примерно так. Наверняка. :)
Я таки не понимаю: а чем не устраивает вариант, который предложил гражданин Novikoff?
Crazy а тем, что ее нужно ждать в течении тайм аута, в то время как ответ сервера может быть получен быстрее. Копране ву?
Хочу подробностей. :)
Пусть по указанному URL возвращается список пар "переменная=значение" с соответствующим квотингом. Последней парой стоит "guard=1".
Во Flash'е мы выставляем guard=0 и загружаем переменные. Загрузка продолжается до таймаута или ошибки любого рода. Если по завершению операции guard=1 -- значит данные загрузились. Если guard=0 -- была ошибка некоторого рода.
Где огрех в логике?
у тебя стоит тайм аут 30 сек. Если ты запросишь не существующий файл, твоя переменная guard не прийдет, и ты будешь ждать 30 секунд. Зато если сервер вернет переменную BadURL=1 и ты будешь за ней следить, то ждать не придется, результат будет получен быстрее. Вот и вся разница. :)
Если я запрошу несуществующий файл, то немедленно получу от сервера ответ с "Error 404".
Ты провел эксперимент и установил, что Flash после получения "Error 404" продолжает ожидание?
грубо говоря, нет. :) Конечно же он не будет ждать если ты используешь событие data. :)
Зато ты можешь быть увереным в отсутствии файла! ;))))))))
Ладно, признаюсь, на самом деле я дерево. :)
joker2k1
01.02.2002, 12:00
хм. ну вы (censored) даете :)))
смотрите. делаю
_root.mymovie.loadVariables('index.php', 'GET');
теперь соберитесь.
две ситуации.
1. путь отсутсвует (index.php)
тогда в случае запуска из среды flash в окне Output тут же получаем ошибку что файла нет. Это в среде разработки, а вот в муве где это выскакивает?
2. путь недоступен в данный момент. например сервак упал. тогда ответ вообще не получим. так и будет висеть
А теперь самое главное, т.к. процесс загрузки асинхронный т.е. это событие mymovie/data обозначающее что данные пришли, и нет события что они вообще не придут!
т.е. мувя будет ждать пока свершиться это событие, которое никогда уже не свершиться, и нет события по которому ошибку вывести.
ну грубо говоря я понял что механизма нет, и придется ловчить и чудить... странно. недоделка явная flash
Оригинал написал(а) joker2k1
1. путь отсутсвует (index.php)
тогда в случае запуска из среды flash в окне Output тут же получаем ошибку что файла нет. Это в среде разработки, а вот в муве где это выскакивает?
Нигде.
2. путь недоступен в данный момент. например сервак упал. тогда ответ вообще не получим. так и будет висеть
Это экспериментально проверенный факт или предположение?
А теперь самое главное, т.к. процесс загрузки асинхронный т.е. это событие mymovie/data обозначающее что данные пришли, и нет события что они вообще не придут!
Вывод: не используй onmovie/data. :)
На самом деле, сервак может и не падать, а ответ от него не придет, или запрос до него может совершенно запросто не дойти. :) Крэйзи, предупреждая твой вопрос, эксперементально проверено, и програмно компенсировано. :)
Этот случай очевиден. Точнее, здесь мы имеет дело с таймаутом на уровне прикладного протокола. Но для флэша опять таки не будет бесконечного ожидания: как только HTTP-энжин даст отмашку об истечении допустимого времени -- LoadVariables завершится.
Подождать чего? :)
Мы говорим о функциии LoadVariables или о конкретном алгоритме ее использования?
И какие же проблемы, помимо стандартной обработки асинхронного ввода, меня при этом ждут? :)
м... слишком умные слова... что-то я прям расстерялся... =)))
всё... я повержен... =)
Ok. По простому: стандартная схема асинхронного ввода:
1. Инициируем операцию и активируем новый поток, ожидающий ее завершения.
2. По завершении операции или по таймауту выполнение этого потока прекращаетяс и выставляется флаг с кодом завершения.
Внимание, вопрос: в каком месте должны возникнуть проблемы при LoadVariables? Почти верю, что они есть (хоть я их и не встретил пока), но хочется подробностей.
Если те, кто намекал мне о страшных траблах, имели в виду иную схему, то, наверное, стОит об этой схеме рассказать. :)
и чего...
ты кажисьсовсем не понимаешь о чём топик или я не понимаю о чём ты =)
файла на сервере не существует... и надо сразу же об этом написать и не ждать таймаута...
при чём здесь твои потоки? :)
а трабл при лоадвариаблес очень простой...
на модеме может оченьдолго загружаться текстовый фаил а скрипт уже потребует переменных... надо ждать пока он загрузится... проверяя разными интересными способами =)
Оригинал написал(а) nagash
файла на сервере не существует... и надо сразу же об этом написать и не ждать таймаута...
Переписываешь ErrorPage так, чтобы он возвращал ответ в виде:
loaded=-1
при чём здесь твои потоки? :)
а трабл при лоадвариаблес очень простой...
на модеме может оченьдолго загружаться текстовый фаил а скрипт уже потребует переменных... надо ждать пока он загрузится... проверяя разными интересными способами =)
Вот тут-то потоки и при чем. :)
не хочу с тобой гворить на эту тему! =)))
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.