这个URLRequest或Loader有什么问题?

时间:2011-04-30 23:03:26

标签: php mysql flex actionscript-3 flash-builder

我有以下代码:

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?获取显示:

peerID=5a00d01af308bb4261198d92a89b939979e7ea260a3ead7d49a9b6bdd0492b72

但是,writeText(vars.peerID)始终显示null。我似乎无法弄清楚为什么。有什么想法吗?

1 个答案:

答案 0 :(得分:4)

URLLoader类是异步的。引用文档:

  

URLLoader对象全部下载   在制作之前来自URL的数据   可用于应用程序中的代码。   它发出有关的通知   下载的进度,你   可以通过bytesLoaded进行监控   和bytesTotal属性,以及   通过派遣活动。

因此,调用URLLoader.load方法后vars.peerID直接工作的唯一方法是,如果您的网络没有零延迟,并且您的服务器端处理的执行时间为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);
}