Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript (http://www.flasher.ru/forum/forumdisplay.php?f=5)
-   -   _root.ard_xml.onLoad постоянно возврашает success = false (http://www.flasher.ru/forum/showthread.php?t=39445)

tayga 06.11.2002 14:27

_root.ard_xml.onLoad постоянно возврашает success = false
 
проверяю загрузился ли XML таким образом:

_root.ard_xml = new XML();
_root.ard_xml.load("some.xml");
_root.ard_xml.ignoreWhite = true;
_root.ard_xml.onLoad = sucs();
function sucs(success){
if(success == true){
_root.suc = true
}
else{
_root.suc = false
}
}

и прилюбом раскдаде _root.suc получается фолс, даж если все загрузилось

что не так????????
спасибо

DeliMIter 06.11.2002 14:53

Success, насколько я помню, индикатор не загрузки (коим является триггер onLoad), а показатель корректности XML файла. Что означает, что у тебя просто кривой XML, или так думает флэш.

tayga 06.11.2002 15:14

цитирую:
success (на самом деле хоть горшком напиши).... - такая полезная штучка
(аргумент функции 'myXML.onLoad', ухх... мои коленки),
которая, придя от сервера скажет нам всего одно слово true, или false, в зависимости от того, какой ответ пришел.
Если true - значит ответ пришел вместе с запрашиваемым XML-ем,
если false - то фигвам-народная-индейская-изба - в ответ придет какая-нибудь серверная ерунда

Название урока: XML? Что? Кто!? Кто же ON !!? ...on - XML!!!

Категория: Новичкам

Автор урока: УильямБрэдберри



а есть ли тогда индикатор загрузки?

DeliMIter 06.11.2002 16:34

На самом деле я ни разу не видел нормальной XML загрузки, коию я использую для чтения текстовых файлов, но сейчас я тыкну в топик носом одного мутанта по имени AnGL, он должон ответить. Успехов.

AnGL 06.11.2002 16:56

Ок...
 
_root.ard_xml.onLoad = sucs(); - не правильно :)
Правельнее - _root.ard_xml.onLoad = sucs; ;)

УильямБрэдберри 06.11.2002 16:59

ща вас Джон напугает... ;)

john 06.11.2002 17:00

В коде три ошибки

первая:

Код:

_root.ard_xml.onLoad = sucs();
по логике, ard_xml должен получить ссылку на функцию которая будет обработчиком события загрузки ХМЛ-а

это нужно делать вот так

Код:

_root.ard_xml.onLoad = sucs;
то есть без круглых скобок

вторая ошибка:

функция sucs объявляется после того как дается ссылка на нее,
то есть

Код:

function sucs(success){
if(success == true){
_root.suc = true
}
else{
_root.suc = false
}
}

а только потом

Код:

_root.ard_xml.onLoad = sucs;
третья ошибка, вызов

_root.ard_xml.load("some.xml");

должен быть быть в конце кода, то есть сначала описываем что нужно делать, а только потом грузим. конечно ничего не закачается за эти три строчки, но все равно.

далее уже не ошибки, а так, шлифовка

во первых,
не зачем заводить и резервировать имя под функцию которая будет использована только для одного объекта XML.

правильнее писать так:

Код:

_root.ard_xml.onLoad = function (success){
if(success == true){
_root.suc = true
}
else{
_root.suc = false
}
}

кстати, что за бредовое название для функции?

еще одно пожелание,
если мы несколько раз меняем значения объекта (работаем с ним), но лучше сделать переменную которая будет хранить ссылку на этот объект, и уже с ней работать,
так будет и короче и понятнее,

после всего изложенного код будет выглядеть так:

Код:

var x = _root.ard_xml = new XML();

x.ignoreWhite = true;

x.onLoad = function (success)
{
        if(success)
        {
                _root.suc = true;
                trace("Incoming XML:" + this)
       
        }else{
                _root.suc = false;
                trace("Error!")
        }
}

x.load("some.xml");


tayga 06.11.2002 17:40

огромное вам спасибо, Джон
от прописанных вами таблеток исправились глюки о которых я даже забыл.

несколько слов в свое оправдание:
1 имя функции самое, что не наесть подходящие. оно мне говорит и опредназначении ее в этом бренном мире.
2 скобки не есть мега камень тут, я с ними и без них пробывал.
3 порядок обьявления и использования функци я взял из примера, который был выташен с сайта макромедии


Спасибо ..........

Nox Noctis 06.11.2002 17:45

Цитата:

кстати, что за бредовое название для функции?
почему бредовое ? :D
нормальное название !... он просто опечатался - букву 'k' пропустил =)

Цитата:

функция sucs объявляется после того как дается ссылка на нее
а при таком синтаксисе [ function name (args) {....}] это не важно =) потому что функции объявленные так инициализируются раньше чем выполняется весь остальной код в кадре.

вот если бы было написано: [name = function (args) {....}] тогда да - идентификатор появился бы только после строчки с объявлением.

и насчет лоада... главное чтоб к моменту вызова лоад() был определен сам объект... все равно из-за асинхронности загрузки онЛоад определится быстрее чем данные хотя бы начнут поступать...

хотя в общем ты прав конечно =)
надо делать все правильно =)

john 06.11.2002 18:08

2Nox Noctis

Код:

а при таком синтаксисе [ function name (args) {....}]
это не важно =) потому что функции объявленные так
 инициализируются раньше чем выполняется весь
остальной код в кадре.

да это так,
если посмотреть каким нибудь вьювером, ASV к примеру,
то функции перемещаются вверх в коде, объявленные так. сортировка.
но это все равно не правильно :)


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

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