Просмотр полной версии : _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, или так думает флэш.
цитирую:
success (на самом деле хоть горшком напиши).... - такая полезная штучка
(аргумент функции 'myXML.onLoad', ухх... мои коленки),
которая, придя от сервера скажет нам всего одно слово true, или false, в зависимости от того, какой ответ пришел.
Если true - значит ответ пришел вместе с запрашиваемым XML-ем,
если false - то фигвам-народная-индейская-изба - в ответ придет какая-нибудь серверная ерунда
Название урока: XML? Что? Кто!? Кто же ON !!? ...on - XML!!!
Категория: Новичкам
Автор урока: УильямБрэдберри
а есть ли тогда индикатор загрузки?
DeliMIter
06.11.2002, 16:34
На самом деле я ни разу не видел нормальной XML загрузки, коию я использую для чтения текстовых файлов, но сейчас я тыкну в топик носом одного мутанта по имени AnGL, он должон ответить. Успехов.
_root.ard_xml.onLoad = sucs(); - не правильно :)
Правельнее - _root.ard_xml.onLoad = sucs; ;)
УильямБрэдберри
06.11.2002, 16:59
ща вас Джон напугает... ;)
В коде три ошибки
первая:
_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");
огромное вам спасибо, Джон
от прописанных вами таблеток исправились глюки о которых я даже забыл.
несколько слов в свое оправдание:
1 имя функции самое, что не наесть подходящие. оно мне говорит и опредназначении ее в этом бренном мире.
2 скобки не есть мега камень тут, я с ними и без них пробывал.
3 порядок обьявления и использования функци я взял из примера, который был выташен с сайта макромедии
Спасибо ..........
Nox Noctis
06.11.2002, 17:45
кстати, что за бредовое название для функции? почему бредовое ? :D
нормальное название !... он просто опечатался - букву 'k' пропустил =)
функция sucs объявляется после того как дается ссылка на нее а при таком синтаксисе [ function name (args) {....}] это не важно =) потому что функции объявленные так инициализируются раньше чем выполняется весь остальной код в кадре.
вот если бы было написано: [name = function (args) {....}] тогда да - идентификатор появился бы только после строчки с объявлением.
и насчет лоада... главное чтоб к моменту вызова лоад() был определен сам объект... все равно из-за асинхронности загрузки онЛоад определится быстрее чем данные хотя бы начнут поступать...
хотя в общем ты прав конечно =)
надо делать все правильно =)
2Nox Noctis
а при таком синтаксисе [ function name (args) {....}]
это не важно =) потому что функции объявленные так
инициализируются раньше чем выполняется весь
остальной код в кадре.
да это так,
если посмотреть каким нибудь вьювером, ASV к примеру,
то функции перемещаются вверх в коде, объявленные так. сортировка.
но это все равно не правильно :)
Nox Noctis
06.11.2002, 18:12
Оригинал написал(а) john
но это все равно не правильно :) аминь =)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.