문제

Asynctoken과 Asyncresponder에 의해 호기되는 httpservice를 구현하는 Flex 응용 프로그램의 예는 어디에서 찾을 수 있습니까? 미리 감사드립니다

httpservice는 특정 주파수로 이와 같은 문자열을 보냅니다.

행#열#번호#Row#열#번호#Row#열#번호#....

편집 코드 :

<?xml version="1.0" encoding="utf-8"?>
<mx:Application creationComplete="onCreationComplete()" 
xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
    import mx.rpc.remoting.RemoteObject;
    import mx.rpc.events.ResultEvent;
    import mx.rpc.events.FaultEvent;
    import mx.rpc.http.mxml.HTTPService;
    import mx.rpc.AsyncRequest;
    import mx.rpc.AsyncResponder;
    import mx.rpc.AsyncToken;
    import mx.collections.ArrayCollection;
    import mx.controls.advancedDataGridClasses.AdvancedDataGridColumn;
    import mx.controls.AdvancedDataGrid;
    import mx.controls.Alert;
    import mx.rpc.IResponder;


    [Bindable]
    public var dataList:ArrayCollection;

    public function getResults(source:String) : ArrayCollection {
    var ac:ArrayCollection = new ArrayCollection();
    var data:Array = source.split('#');
    for (var i:int = 0; i < data.length; i += 3) {
    var dataObj:Object = {row: data[i], column: data[i+1], value: data[i+2]};     
    ac.addItem(dataObj)
    }

    return ac;
    }
    public function result(event:ResultEvent):void{
    dataList = getResults( String(event.result) );
    }
    public function fault(event:FaultEvent) : void {
    dataList = getResults(String(event.fault)); 
    }

public function onCreationComplete():void
{
var service:HTTPService = new HTTPService();
service.url = "http://10.15.20.75/server4flex/servlet/Datagen";
service.resultFormat = "text";
var token:AsyncToken = service.send(dataList);
token.addResponder(new mx.rpc.Responder(result, fault));
}

]]>
</mx:Script>
<mx:AdvancedDataGrid id="dg"
dataProvider="{result}"  
liveScrolling="true"  
    x="10" y="10" width="621"
    verticalScrollPolicy="on"
 >
        <mx:columns>
                    <mx:AdvancedDataGridColumn dataField="row"
           headerText="Riga"/>
                    <mx:AdvancedDataGridColumn dataField="column"
           headerText="Colonna"/>
                    <mx:AdvancedDataGridColumn dataField="value" 
           headerText="Valore"/>
        </mx:columns>
 </mx:AdvancedDataGrid>

 </mx:Application>
도움이 되었습니까?

해결책

나는 당신이 정말로 돌보는 것이 무엇인지 모르지만 여기 또는 여기 예를 들어, 사용 방법입니다 AsyncToken 그리고 AsyncResponder

편집하다:

  1. 당신의 dataList 해야 Bindable
  2. 설정하지 마십시오 dataList 각 루프 반복에
  3. 당신은 당신을 기능이라고 부릅니다 getResults 결과가 준비된 시점에서
  4. event 안에 result 함수는 an입니다 Event 그러나 또한 a ResultEvent 어디에 있는지 result 데이터가 포함 된 필드

이것 (테스트되지 않은)으로 보일 수 있습니다.

[Bindable]
public var dataList:ArrayCollection;

public function getResults(source:String) : ArrayCollection {
    var ac:ArrayCollection = new ArrayCollection();
    var data:Array = source.split('#');
    for (var i:int = 0; i < data.length; i += 3) {  
     ac.addItem( {row: data[i], column: data[i+1], value: data[i+2]} );
    }
    return ac;
}

private function result(event:ResultEvent) : void {
 dataList = getResults( String(event.result) );
}

edit2:

이것은 간단한 PHP 파일을 사용하여 로컬 웹 서버에서 데이터를 실행하게하는 작업 예입니다.

플렉스 부분

<?xml version="1.0" encoding="utf-8"?>
<mx:Application creationComplete="onCreationComplete()"
            xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Script>
<![CDATA[
  import mx.collections.ArrayCollection;
  import mx.rpc.AsyncToken;
  import mx.rpc.Responder;
  import mx.rpc.events.FaultEvent;
  import mx.rpc.events.ResultEvent;
  import mx.rpc.http.mxml.HTTPService;

    [Bindable]
    public var dataList : ArrayCollection;

    public function getResults(source : String) : ArrayCollection {
        var ac : ArrayCollection = new ArrayCollection();
        var data : Array = source.split('#');
        for (var i : int = 0; i < data.length; i += 3) {
            var dataObj : Object = {row: data[i], column: data[i + 1], value: data[i + 2]};
            ac.addItem(dataObj)
        }

        return ac;
    }

    public function result(event : ResultEvent) : void {
        dataList = getResults(String(event.result));
    }

    public function fault(event : FaultEvent) : void {
        //here do whatever you want to manage the error you received
    }

    public function onCreationComplete() : void
    {
        var service : HTTPService = new HTTPService();
        service.url = "http://127.0.0.1/getDatas.php";
        service.resultFormat = "text";
        var token : AsyncToken = service.send();
        token.addResponder(new mx.rpc.Responder(result, fault));
    }

]]>
</mx:Script>
<mx:AdvancedDataGrid id="dg"
                     dataProvider="{dataList}"
                     liveScrolling="true"
                     x="10" y="10" width="621"
                     verticalScrollPolicy="on"
        >
    <mx:columns>
        <mx:AdvancedDataGridColumn dataField="row"
                                   headerText="Riga"/>
        <mx:AdvancedDataGridColumn dataField="column"
                                   headerText="Colonna"/>
        <mx:AdvancedDataGridColumn dataField="value"
                                   headerText="Valore"/>
    </mx:columns>
</mx:AdvancedDataGrid>

</mx:Application>

php part (getdatas.php)

<?php print "1#c1#v1#2#c2#v2#3#c3#v3"?>

다른 팁

private function onCreationComplete():void
{
    var service:HTTPService = new HTTPService();
    service.url = "http://www.google.com";
    service.resultFormat = "text";
    var token:AsyncToken = service.send();
    token.addResponder(new mx.rpc.Responder(result, fault));
}

private function result(event:Event):void
{
    trace(1, event);
}

private function fault(event:Event):void
{
    trace(2, event);
}

설립하다 여기.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top