これは、データベースから結果を取得する目的で 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;
}