AS3代码
<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);
}
接收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天后我终于找到了使用amfphp的flex和mysql,请帮忙吗?
答案 0 :(得分:0)
如果您使用的是amfphp和Flash,则必须注册您的VO:
import org.corlan.VOAuthor;
// ...
registerClassAlias("org.corlan.VOAuthor", VOAuthor);
只有这样才能识别出你从ActionScript发送它的对象。
答案 1 :(得分: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