使用Amfphp实现Flex与php通信

本教程简要讲解怎样实现使用Amfphp实现Flash与php的通信。通过本例的学习,我们将了解使用Amfphp Flash Remoting开发Flex RIAs的基本流程。

如果你已经看懂使用Fluorine实现Flex与.NET通信这篇文章,你基本上明白 了怎样实现Flash与Amfphp的通信。主要有两点不同。

1.

Web应用的根目录不同,如下图。

根目录

2.

发布文件夹的路径不同,如下图。

路径

我们改进了一下mxml,为sayHello()方法添加了result事件fault和事件,当调用远程方法成功时就会侦听到result事件并执行Actionscript代码块中的resultHandler方法,反之则会侦听到fault事件并执行faultHandle方法。代码加下:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">
	<mx:RemoteObject id="service"  destination="amfphp" 
		source="tutorials.remoting.HelloWorld" showBusyCursor="true" >
        		<mx:method name="sayHello" result="resultHandler(event)" 
        	fault="faultHandler(event)" />
    	</mx:RemoteObject>
	<mx:Script>
        	<![CDATA[
            import mx.managers.CursorManager;
            import mx.rpc.events.ResultEvent;
            import mx.rpc.events.FaultEvent;   
            private function resultHandler(re:ResultEvent):void
            {
                lblResult.text = re.result.toString();
            }   
            private function faultHandler(fault:FaultEvent):void
            {
                CursorManager.removeBusyCursor();
                lblResult.text = "Message:" + fault.fault.faultString;
            }
        	]]>
    	</mx:Script>
	<mx:TextInput id="txtName" />
	<mx:Button label="Say Hello" click="service.sayHello(txtName.text)" />
	<mx:Label id="lblResult" fontSize="18"/>
</mx:Application>

运行测试一下,label将显示来自Amfphp Flash Remoting的问候。整一个错误出来,比如修改一下方法名或服务路径,再运行程序,label将显示 错误信息。可见,这样的代码更像在Flash中使用Flash Remoting,更有扩展性。

补充:要用Flex编辑Amfphp Flash Remoting应用程序,你还要手动添加services-config.xml。我已经给大家编写好了,点击下载并解压到Amfphp根目录下。

评论: 0 | 引用: 0 | 查看次数: -
发表评论
昵 称:
密 码: 游客发言不需要密码.
邮 箱: 邮件地址支持Gravatar头像,邮箱地址不会公开.
网 址: 输入网址便于回访.
内 容:
验证码:
选 项:
虽然发表评论不用注册,但是为了保护您的发言权,建议您注册帐号.
字数限制 1000 字 | UBB代码 开启 | [img]标签 关闭