<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    云自無心水自閑

    天平山上白云泉,云自無心水自閑。何必奔沖山下去,更添波浪向人間!
    posts - 288, comments - 524, trackbacks - 0, articles - 6
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    Flex2通過amfphp與PHP的整合調用

    Posted on 2006-06-01 17:33 云自無心水自閑 閱讀(1600) 評論(4)  編輯  收藏 所屬分類: Flex 、Flex2
    一。安裝amfphp,
    1. 下載ampfphp1.2版本
    2. 建立一個目錄amfphp, 將包中的文件解壓到此目錄中。
    3. 目錄結構舉例如下:
    c:\amfphp\amf-core
    c:\amfphp\browser
    c:\amfphp\services
    c:\amfphp\gateway.php
    在Http Server中(可以是IIS,Apache Http Server)中建立一個虛擬目錄,映射c:\amfphp
    4. 驗證
    在瀏覽器中輸入 http://localhost/amfphp/gateway.php
    會看到一個成功頁面。

    二。編寫PHP端代碼
    舉個例子:定義一個sample類,這個類編寫在sample.php中
    其中定義一個getUsers方法
    這個php文件放在amfphp\services\中。
    <?php
    // Create new service for PHP Remoting as Class
    class sample
    {
    ??????? function sample ()
    ??????? {
    ??????????????? // Define the methodTable for this class in the constructor
    ??????????????? $this->methodTable = array(
    ??????????????????????????????? "getUsers" => array(
    ??????????????????????????????? "description" => "Return a list of users",
    ??????????????????????????????? "access" => "remote"
    ??????????????????????? )
    ??????????????? );
    ??????? }

    ??????? function getUsers ($pUserName) {
    ??????????????? $mysql = mysql_connect(localhost, "username", "password");
    ??????????????? mysql_select_db( "sample" );
    ??????????????? //return a list of all the users
    ??????????????? $Query = "SELECT * from users";
    ??????????????? $Result = mysql_query( $Query );
    ??????????????? while ($row = mysql_fetch_object($Result)) {
    ??????????????????????? $ArrayOfUsers[] = $row;
    ??????????????? }
    ??????????????? return( $ArrayOfUsers );
    ??????? }
    }
    ?>
    驗證:
    在瀏覽器中輸入http://localhost/amfphp/browser/index.html
    會發現在左邊Frame中有一個sampe的鏈接,點擊后,在右邊Frame中可以測試此方法。

    三。編寫Flex端代碼
    首先寫一個RemotingConnection類,繼承自NetConnection,主要是用于統一指定編碼格式
    package
    {
    ??????? import flash.net.NetConnection;
    ??????? import flash.net.ObjectEncoding;
    ?????? ?
    ??????? public class RemotingConnection extends NetConnection
    ??????? {
    ??????????????? public function RemotingConnection( sURL:String )
    ??????????????? {
    ??????????????????????? objectEncoding = ObjectEncoding.AMF0;
    ??????????????????????? if (sURL) connect( sURL );
    ??????????????? }
    ?????????????? ?
    ??????????????? public function AppendToGatewayUrl( s : String ) : void
    ??????????????? {
    ??????????????? }
    ??????? }
    }
    然后在應用中可以進行如下調用:
    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns="*" creationComplete="initApplication()">
    ??????? <mx:DataGrid dataProvider="{dataProvider}">
    ??????????????? <mx:columns>
    ??????????????????????????????? <mx:DataGridColumn headerText="Userid" dataField="userid"/>
    ??????????????????????????????? <mx:DataGridColumn headerText="User Name" dataField="username"/>
    ??????????????????????????????? <mx:DataGridColumn headerText="User Name" dataField="emailaddress"/>
    ??????????????????????? </mx:columns>
    ??????? </mx:DataGrid>
    ??????? <mx:Script>
    ??????????????? <![CDATA[
    ??????????????????????? import mx.controls.Alert;
    ??????????????????????? [Bindable]
    ??????????????????????? public var dataProvider:Array;
    ?????????????????????? ?
    ??????????????????????? import flash.net.Responder;
    ?
    ??????????????????????? public var gateway : RemotingConnection;
    ?????????????????????? ?
    ??????????????????????? public function initApplication() : void
    ??????????????????????? {
    ??????????????????????????????? gateway = new RemotingConnection( "http://localhost/amfphp/gateway.php" );
    ??????????????????????????????? gateway.call( "sample.getUsers", new Responder(onResult, onFault));
    ??????????????????????? }
    ?????????????? ?
    ??????????????????????? public function onResult( result : Array ) : void
    ??????????????????????? {
    ??????????????????????????????? dataProvider = result;
    ??????????????????????????????? // mx.controls.Alert.show("result: " + result.toString());
    ??????????????????????? }
    ?????????????????????? ?
    ?????????????????????? ?
    ??????????????????????? public function onFault( fault : String ) : void
    ??????????????????????? {
    ??????????????????????????????? // trace( fault );
    ??????????????????????????????? mx.controls.Alert.show(fault);
    ??????????????????????? }
    ??????????????? ]]>
    ??????? </mx:Script>
    </mx:Application>

    補充說明:如果調用的PHP函數需要參數,比如:getUsers($user_name)
    那么可以在Flex調用端,需要相應的添加此參數:
    gateway.call( "sample.getUsers", new Responder(onResult, onFault), "<username>");


    評論

    # re: Flex2通過amfphp與PHP的整合調用  回復  更多評論   

    2006-06-01 17:36 by dudu
    該文應該放在其他技術區。

    # re: Flex2通過amfphp與PHP的整合調用  回復  更多評論   

    2006-06-06 08:48 by usherlight
    OK.

    # re: Flex2通過amfphp與PHP的整合調用  回復  更多評論   

    2006-08-02 23:32 by Goacross
    不是還要一個數據庫嗎?能否給出完整示例下載?

    # re: Flex2通過amfphp與PHP的整合調用  回復  更多評論   

    2006-08-08 15:26 by usherlight
    create table users {
    id int,
    name varchar(50),
    age int,
    birthday Date
    }
    主站蜘蛛池模板: 亚洲国产精品无码久久一线| 亚洲性69影院在线观看| 国产午夜无码精品免费看| 亚洲色图古典武侠| 成年人免费观看视频网站| 九九免费久久这里有精品23| 久久精品国产亚洲AV无码偷窥| 国产精品成人免费视频网站京东 | 99视频在线精品免费观看6| 在线观看国产一区亚洲bd| 亚洲七七久久精品中文国产| 免费人成视频在线观看网站| 亚洲日韩看片无码电影| 精品国产综合成人亚洲区| 免费A级毛片无码免费视| 99在线视频免费观看| 亚洲国产成人久久精品软件| 亚洲精品无码mv在线观看网站| 成人av免费电影| 免费91最新地址永久入口| 亚洲精品第一国产综合亚AV| 亚洲爆乳精品无码一区二区三区| 四虎成人精品一区二区免费网站| 伊人久久大香线蕉免费视频| 亚洲精品无播放器在线播放| 亚洲国产天堂久久综合网站| 午夜亚洲福利在线老司机| 四虎成年永久免费网站| 国产精品九九久久免费视频 | 日本成人免费在线| 最刺激黄a大片免费网站| 无码精品人妻一区二区三区免费 | 精品无码AV无码免费专区| www在线观看播放免费视频日本| 国产成人亚洲精品| 成人片黄网站A毛片免费| 性一交一乱一视频免费看| 最近中文字幕免费完整| 国产麻豆成人传媒免费观看| 国产成人亚洲综合无码| 亚洲色自偷自拍另类小说|