flex Httpservice 访问php 参数为null
看cookbook到了数据访问。开始便给出了Httpservice示例,我按着书中所说布置了工程,把代码copy到工程里:
这是flex的代码:
- XML code
<?xml version="1.0" encoding="utf-8"?><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical"> <mx:HTTPService url="http://localhost:18000/index.php" id="service" result="serviceResult(event)" fault="serviceFault(event)" method="GET" contentType="application/xml" useProxy="false"> <mx:request xmlns=""> <id>{requestedId}</id> </mx:request> </mx:HTTPService> <mx:Script> <![CDATA[ import mx.rpc.events.FaultEvent; import mx.rpc.events.ResultEvent; import mx.controls.Alert; [Bindable] private var requestedId:String; //trace the result of the service out private function serviceResult(event:Event):void { trace(service.lastResult.name); } // in the event that the service faults or times out private function serviceFault(event:Event):void { trace('broken service'); } private function callService():void { try{ requestedId = input.text; service.send(); }catch(e:Error){ Alert.show(e.message); } } ]]> </mx:Script> <mx:TextInput id="input"/> <mx:Button label="get user name" click="callService()"/> <mx:Text text="{service.lastResult.id}"/> <mx:Text text="{service.lastResult.name}"/> <mx:Text text="{service.lastResult.age}"/></mx:Application>
这是PHP后端代码:
- PHP code
<?php $id = $_GET["id"]; echo('<id>'.$id.'</id><name>ok</name><age>30</age>');?>
flex通过localhost:18000访问index.php,同时向php用get形式传送一个key为id的值。实际运行后,flex的确可以访问到index.php,但问题是只能取到echo('<id>'.$id.'</id><name>ok</name><age>30</age>');中的name与age的值,由flex传过去的id为null。
php端通过localhost:18000/index.php?id=111 证明id是可以获取的,无错。
请大家帮忙找找原因,不胜感激!
[解决办法]
至于FLEX传过去的ID没拿到,估计是requestedId 还没拿到值,你可以试试先给这个变量一个值
private var requestedId:String = “test”;
建议你不要用
<mx:request xmlns="">
<id>{requestedId}</id>
</mx:request>这种方式,
直接将参数放到send方法里传过去就好了,例如service.send({id: requestedId});
[解决办法]
在send之前改变url也行
直接在URL后面带 ?id=变量 那样稳的传的出去