场景:flex Httpservice 访问php 参数替null
flex Httpservice 访问php 参数为null
看cookbook到了数据访问。开始便给出了Httpservice示例,我按着书中所说布置了工程,把代码copy到工程里:
这是flex的代码:
id="service"
result="serviceResult(event)" fault="serviceFault(event)"
method="GET" contentType="application/xml"
useProxy="false">
{requestedId}
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);
}
}
]]>
这是PHP后端代码:
$id = $_GET["id"];
echo(''.$id.'ok30');
?>
flex通过localhost:18000访问index.php,同时向php用get形式传送一个key为id的值。实际运行后,flex的确可以访问到index.php,但问题是只能取到echo(''.$id.'ok30');中的name与age的值,由flex传过去的id为null。
php端通过localhost:18000/index.php?id=111 证明id是可以获取的,无错。
请大家帮忙找找原因,不胜感激!
------解决方案--------------------
至于FLEX传过去的ID没拿到,估计是requestedId 还没拿到值,你可以试试先给这个变量一个值
private var requestedId:String = “test”;
建议你不要用
{requestedId}
这种方式,
直接将参数放到send方法里传过去就好了,例如service.send({id: requestedId});
------解决方案--------------------
在send之前改变url也行
直接在URL后面带 ?id=变量 那样稳的传的出去