PDA

Просмотр полной версии : _root.ard_xml.onLoad постоянно возврашает success = false


tayga
06.11.2002, 14:27
проверяю загрузился ли 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 к примеру,
то функции перемещаются вверх в коде, объявленные так. сортировка.
но это все равно не правильно :)

Nox Noctis
06.11.2002, 18:12
Оригинал написал(а) john
но это все равно не правильно :) аминь =)