0

これは、データベースから結果を取得する目的で php クラスを作成した最初のフレックス アプリケーションです。サービスは間違いなく機能しますが、フラッシュで結果を一覧表示するのが難しく、フラッシュ内から関数を適切に呼び出す方法がわかりません。

ここにphpがあります:

<?php
 class CityService {

  public function getCitys($q) {

  $con = mysqli_connect('host', 'user', 'password','database') or die(mysqli_connect_error());

  $sql="SELECT * FROM city WHERE countrycode ='".$q."'";

  $result = mysqli_query($con, $sql) or die('query Failed: ' . mysqli_error($con));

  $rows = array();
  while($row = mysqli_fetch_object($result)) {

      $rows[] = $row;

  }
  return $rows;
  }

}
?>

次に、フラッシュで関数を取得し、$q に指定された値に従って結果を表示しようとしますが、フラッシュは結果を表示しません。サービスをセットアップすると、すべてが機能していることを示し、ビルダーで結果を取得できますしかし、すべてをセットアップしmxmlてから実行しようとすると、何も返されません

これは、関連するすべての部分を含むフラッシュ mxml のサンプルです。

   <fx:Script><![CDATA[
    import com.adobe.serializers.utility.TypeUtility;
    import mx.controls.Alert;
    import mx.events.FlexEvent;

                    protected function button_clickHandler_100():void
    {
        currentState='data';
    }

        protected function dataGrid_creationCompleteHandler(event:FlexEvent):void
    {
        getCitysResult.token = cityservice.getCitys('GB');
    }
        ]]></fx:Script>

    <s:states>
      <s:State fc:color="0x0003a3" name="europe"/>
      <s:State name="data" fc:color="0x0081cc"/>
    </s:states>


      <fx:Declarations>
        <s:CallResponder id="getCitysResult"/>
        <cityservice:Cityservice id="cityservice" fault="Alert.show(event.fault.faultString + '\n' + event.fault.faultDetail)" showBusyCursor="true"/>
      </fx:Declarations>


      <s:Button click="button_clickHandler_100()" id="button128" includeIn="europe" skinClass="components.englandButton" x="101" y="135"/>


      <mx:DataGrid includeIn="data" x="23" y="37" id="dataGrid" creationComplete="dataGrid_creationCompleteHandler(event)" dataProvider="{getCitysResult.lastResult}">
        <mx:columns>
          <mx:DataGridColumn headerText="citycode" dataField="citycode"/>
          <mx:DataGridColumn headerText="id" dataField="id"/>
          <mx:DataGridColumn headerText="countrycode" dataField="countrycode"/>
          <mx:DataGridColumn headerText="city" dataField="city"/>
        </mx:columns>
      </mx:DataGrid>

私はここで何かを逃していますか?デザインレイヤーの残りの部分とは別に、都市のphpサービスに適切に価値を与えていますか? GBをボタンにバインドして、それを都市の機能に戻すにはどうすればよいですか? また、主な問題は、ページに移動しても結果が得られない???

これはアクションスクリプトです:

package services.cityservice
{

public class Cityservice extends _Super_Cityservice
{


 }

 }

また、getCitys 関数

package services.cityservice
 {
 import com.adobe.fiber.core.model_internal;
 import com.adobe.fiber.services.wrapper.RemoteObjectServiceWrapper;
 import com.adobe.serializers.utility.TypeUtility;
 import mx.rpc.AbstractOperation;
 import mx.rpc.AsyncToken;
 import mx.rpc.remoting.Operation;
 import mx.rpc.remoting.RemoteObject;
 import valueObjects.Citydata;

 import mx.collections.ItemResponder;
 import com.adobe.fiber.valueobjects.AvailablePropertyIterator;

 [ExcludeClass]
 internal class _Super_Cityservice extends com.adobe.fiber.services.wrapper.RemoteObjectServiceWrapper
 {      

// Constructor
public function _Super_Cityservice()
{
    // initialize service control
    _serviceControl = new mx.rpc.remoting.RemoteObject();

    var operations:Object = new Object();
    var operation:mx.rpc.remoting.Operation;

    operation = new mx.rpc.remoting.Operation(null, "getCitys");
     operation.resultElementType = valueObjects.Citydata;
    operations["getCitys"] = operation;

    valueObjects.Citydata._initRemoteClassAlias();

    _serviceControl.operations = operations;   
    _serviceControl.convertResultHandler = com.adobe.serializers.utility.TypeUtility.convertResultHandler;
    _serviceControl.source = "cityservice";
    _serviceControl.endpoint = "gateway.php";
    destination = "cityservice";



     model_internal::initialize();
}


   public function getCitys(q:Object) : mx.rpc.AsyncToken
{
    var _internal_operation:mx.rpc.AbstractOperation = _serviceControl.getOperation("getCitys");
    var _internal_token:mx.rpc.AsyncToken = _internal_operation.send(q) ;

    return _internal_token;
}   
4

0 に答える 0