Что не так с этим URLRequest или Loader? - PullRequest
1 голос
/ 01 мая 2011

У меня есть следующий код:

var myRequest:URLRequest = new URLRequest("http://localhost/example.com/scripts/get_peerID.php?peerID=" + myID.text);
var myLoader:URLLoader = new URLLoader();
myLoader.dataFormat = "URLLoaderDataFormat.VARIABLES";
myLoader.load(myRequest);
writeText(myLoader.data);
var vars:URLVariables = new URLVariables(myLoader.data);
writeText(vars.peerID);

И отображение get_peerID.php? Get:

peerID=5a00d01af308bb4261198d92a89b939979e7ea260a3ead7d49a9b6bdd0492b72

Однако, writeText(vars.peerID) всегда отображает null.Я не могу понять, почему.Есть идеи?

1 Ответ

4 голосов
/ 01 мая 2011

Класс URLLoader является асинхронным.Чтобы процитировать документы:

Объект URLLoader загружает все данные с URL-адреса, прежде чем сделать его доступным для кодирования в приложениях.Он отправляет уведомления о ходе загрузки, которые можно отслеживать через свойства bytesLoaded и bytesTotal, а также через отправленные события.

Таким образом, единственный способ, которым vars.peerID будет работать напрямуюпосле вызова метода URLLoader.load, если ваша сеть имеет нулевую задержку, а обработка на стороне сервера имеет 0 времени выполнения.Оба крайне маловероятны.

Вместо этого вы должны прослушать событие complete .

var myRequest:URLRequest = new URLRequest("http://localhost/example.com/scripts/get_peerID.php?peerID=" + myID.text);
var myLoader:URLLoader = new URLLoader();
myLoader.dataFormat = "URLLoaderDataFormat.VARIABLES";
myLoader.addEventListener(Event.COMPLETE,onComplete);
myLoader.load(myRequest);

, а затем где-нибудь в коде, что-то вроде этого:

public function onComplete(event:Event):void{
 writeText(myLoader.data);
 var vars:URLVariables = new URLVariables(myLoader.data);
 writeText(vars.peerID);
}
...