2012-01-31 27 views
0

AS3代码铸造从FLEX到PHP

<fx:Declarations> 
    <!-- this is the RemoteObject used to make the RPC calls --> 
    <mx:RemoteObject id="myRemote" destination="MyService" source="MyService" 
     endpoint="http://localhost/amfphp/gateway.php"     
      showBusyCursor="true"/> 

</fx:Declarations> 

protected function button1_clickHandler(event:MouseEvent):void 
{ 
    var aut:VOAuthor; // value object class 
    aut = new VOAuthor(); 
    aut.id_aut = 3; 
    aut.fname_aut = "test"; 
    aut.lname_aut = "123"; 
    myRemote.saveData(aut); 
} 

Receving PHP代码

public function saveData($author) 
{ 
    $mysql = mysql_connect("localhost", "mx112", "xxxxxx");   
    mysql_select_db("flex360");  
    $query = "INSERT INTO authors (fname_aut, lname_aut) VALUES ('".$author->fname_aut."', '".$author->lname_aut."')";   
    $result = mysql_query($query);     
    return $author; 
} 


<?php 
class VOAuthor { 
public $id_aut;  
public $fname_aut;  
public $lname_aut;   
var $_explicitType="org.corlan.VOAuthor";} 
?> 

Flex的网络监控响应:原始视图

{lname_aut=123, _explicitType=org.corlan.VOAuthor, fname_aut=test, id_aut=3} 

,但如果我这样做,在结束php代码

return $author->lname_aut; 

网络监视器响应为NULL

所以问题是我可以打印数组但是如何将数组转换为已知的php类型? 5天后,我finnaly想出flex和mysql使用amfphp任何人请帮助?

+0

tx @pkyeck我会尝试你的代码的方式我试过这个$ author ['fname_aut']这工作对我来说,但因为我使用一个简单的例如,它好吗如何复杂的系统发票系统我可能必须在一个远程请求中发送多个类如何处理这段时间的数据?请咨询 – Fara 2012-02-01 04:20:55

回答

0

如果您正在使用AMFPHP和Flash,你必须注册你的虚拟组织:

import org.corlan.VOAuthor; 
// ... 
registerClassAlias("org.corlan.VOAuthor", VOAuthor); 

只有PHP是否承认你从ActionScript发送它的对象。

0

是的,您需要注册您的课程,另一种方法是在Flex VO声明中使用元数据标签。

package VO 
{ 
    [RemoteClass(alias="org.corlan.VOAuthor")] 
    public class VOAuthor 
    { 
     private var id_aut : int; 
     public var fname_aut : String; 
     public var lname_aut : String; 
... 

希望帮助,

罗杰。

PS。更详细的解释(帮助我)可以在这里找到:http://www.brentknigge.com/?q=node/499