![]() |
|
||||||||||
|
|||||
|
Здравствуйте, столкнулся с проблемой, что у меня игнорируется sendAndLoad в функции
|
|
|||||
|
В Вы не могли бы всё же помочь? Я смотрел документацию, но так и не нашёл ответа на свой вопрос
|
|
|||||
|
.
|
Сдается мне, что Вы смешали методы sendAndLoad классов XML и LoadVars. Вы ожидаете в ответе XML, а LoadVars ожидает в ответе пары [имя=значение], разделенные '&'. Так понятнее?
|
|
|||||
|
Но без функции у меня всё работает 0_о
|
|
|||||
|
.
|
Гм. Пути флеша неиспобедимы. Мой косяк.
По Вам: асинхронная операция загрузки не может моментально вернуть результат. То есть, Вы надеятесь получить результат просто вызвав getV. Она вернет undefined, потому что не будет ждать окончания загрузки. Вам необходимо продолжить работу после получения ответа. вот и всё var app:Object = this; varxml.onLoad = function(success:Boolean) { if (success) { trace("Загрузил"); app.processResponce(this); } else { trace("Oooops!"); } }; sendvar.sendAndLoad(SERVER, varxml, "POST"); function processResponce(value:XML):Void { var vr:String = value.firstChild.firstChild.nodeValue; // go up! } |
|
|||||
|
У меня там всё же в функции есть что то я просто это вырезал для наглядности и структуру мне желательно такую же оставить, я попытался Ваш код переписать, всё равно не работает.
|
|
|||||
|
.
|
Ну не вернет getV ожидаемое значение! потому что varxml.firstChild.firstChild.nodeValue на момент начала загрузки не существует. Дождитесь окончания загрузки. потом и спрашивайте свой vr.
function getV(v1):Void { //тоесть тут бла бла бла зависящий от v1 и влияющий на sendvar var app:Object = this; varxml.onLoad = function(success:Boolean) { if (success) { trace("Загрузил"); app.processResponce(this); } else { trace("Oooops!"); } }; sendvar.sendAndLoad(SERVER, varxml, "POST"); } function processResponce(value:XML):Void { var vr:String = value.firstChild.firstChild.nodeValue; // go up! } |
|
|||||
|
Негуру
администратор
Регистрация: Jan 2000
Адрес: Кёнигсберг in Moscow
Сообщений: 21,883
Записей в блоге: 7
|
Такая структура работать не будет.
getV = function (v1) {
//тоесть тут бла бла бла зависящий от v1 и влияющий на sendvar
sendvar.sendAndLoad(SERVER, varxml, "POST");
varxml.onLoad = function() {
vr=varxml.firstChild.firstChild.nodeValue;
trace("Загрузил");
}
return vr;
}
Как видите return vr находится в желтой части, а vr=varxml.firstChild.firstChild.nodeValue; в голубой, поэтому будете получать undefined |
|
|||||
|
А как в таком случае приостановить выполнение функции, пока не придёт ответ?
|
![]() |
![]() |
Часовой пояс GMT +4, время: 23:54. |
|
|
« Предыдущая тема | Следующая тема » |
|
|