我在Flex應用程序中需要創建&從調用返回URL填充對象。這裏是我需要做的:需要處理來自URLLoader.load調用的返回字符串
- 我有一個類與Web服務器通信。
- 我在這個類(稱爲getPerson)中有一個函數,它將返回一個Person對象,該對象從Web服務器返回的XML數據中填充。
我遇到的問題(似乎這是一個非常普遍的問題,但我沒有看到一個解決方案,我可以看到會工作)是URLLoader的加載方法是異步的。
我有一個Event.COMPLETE事件觸發Event.COMPLETE事件,它解析XML並在事件處理程序中填充我的對象,但是如何將此對象返回到我的應用程序中最初稱爲getPerson函數的原始代碼?
因此,當從服務器返回時,我的方法完成,我不能返回我填充的Person對象。
我的問題是我該如何做到這一點?對於ActionScript我還是比較新的,現在我已經在這一天旋轉了我的輪子。
我添加這證明我有這個問題的一些示例代碼 - 我已經簡化了,我使用的是什麼:
MXML應用程序文件:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
creationComplete="application1_creationCompleteHandler(event)">
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
protected function application1_creationCompleteHandler(event:FlexEvent):void
{
var d:DAL = new DAL();
d.CreateNewPerson("John Smith");
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
</s:Application>
DAL.cs文件:
package { import flash.events.Event; import flash.net.URLLoader; import flash.net.URLRequest; import flash.net.URLRequestMethod; import mx.controls.Alert; public class DAL { public function DAL() { } public function CreateNewPerson(Name:String):void { var strXML:String = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"; var loader:URLLoader = new URLLoader(); loader.addEventListener(Event.COMPLETE, onPostComplete); var request:URLRequest = new URLRequest("http://www.cnn.com"); request.method = URLRequestMethod.POST; request.data = strXML; loader.load(request); } private function onPostComplete(evt:Event):void { //Process returned string //Here is where I need to return my object var obj:Object = new Object() } } }
我需要做的是以某種方式將「obj」變量返回給我的MXML應用程序文件,以便我可以在那裏使用它。
在此先感謝!
如果發佈一些代碼會有所幫助。在附註中,爲什麼不將代碼從源代碼移到Event.COMPLETE事件? – Angelo