PDA

Просмотр полной версии : Использование переменной после onData


FreShBY
11.11.2009, 22:18
Здравствуйте.
Я про забадался сегодня искать в гугле и тому подомном ответ на вопрос. Поэтому пишу тут:

Имею скрипт AS:
var signature:LoadVars = new LoadVars();
signature.onData = function(text:String):Void
{
_global.signatureString = text;
};
trace(_global.signatureString);
signature.sendAndLoad('http://127.0.0.1/test.php');

И скрипт PHP:
<?php
echo "Im Signature String";
?>

Мой вопрос: почему не срабатывает trace(_global.signatureString); и пишет undefined ?

Kuruki
11.11.2009, 22:36
Потому что onData вызывается асинхронно и на момент трейса еще не была вызвана

FreShBY
11.11.2009, 22:39
Потому что onData вызывается асинхронно и на момент трейса еще не была вызвана

Как решить данную проблему?

Kuruki
11.11.2009, 22:42
var signature:LoadVars = new LoadVars();
signature.onData = function(text:String):Void
{
_global.signatureString = text;
trace(_global.signatureString);
}
signature.sendAndLoad('http://127.0.0.1/test.php');

FreShBY
11.11.2009, 22:43
:)))))))
похоже вы меня не понели, я то вкурсе что так всё покажет, но мне потом _global.signatureString нужно использовать в других функция. А оно пустое

Kuruki
11.11.2009, 22:46
вызывать другие функции после наступления onData

FreShBY
11.11.2009, 22:51
Пример можно?

Kuruki
11.11.2009, 22:58
Ну вообще-то показал уже на примере трейса, но вот еще одинvar signature:LoadVars = new LoadVars();
signature.onData = function(text:String):Void
{
_global.signatureString = text;
showSignature();
}
signature.sendAndLoad('http://127.0.0.1/test.php');

function showSignature():Void
{
someTextField.text = _global.signatureString;
}
А если вызвать showSignature не в обработчике, то в поле выведется undefined