作者fr1432422 (倒头栽)
看板Flash
标题[问题] Flash连结资料库 (amfphp、PHP)
时间Mon Oct 10 21:21:33 2011
已爬完这里的同样问题文章,但没能解决问题;资料库版则是没这类文章。
先说明一下我的环境
网页用PHP做的,伺服器是AppServ,资料库是MySQL
本机的预设
root是C:\AppServ\www ,这是照书上的预设,amfphp也装在这里
我想让Flash连上资料库,让跑马灯能出现使用者输入的昵称
於是买了「Flash资料库应用即战力」,跟着里头的步骤走都很顺,直到Flash连线资料库
开始出问题。
这是书上的范例档案 HowAreYou.php
==============================================================================
<?php
class HowAreYou
{
function sendStr($yourname)
{
return "$yourname,你好阿!!" ;
}
}
?>
==============================================================================
这个档案我用amfphp的browser测试没问题,有回传值,但是中文的部份会有乱码问题
下面这个是书上的范例档 test.fla中的第1个影格中的actionscript
==============================================================================
stop();
var connection:NetConnection; //宣告NetConnection物件
var responder:Responder; //宣告 Responder物件
//建立物件实体
responder = new Responder(onResult, onFault); //资料传送成功或失败
connection = new NetConnection;
//设定Service连线
var gateway:String = "/amfphp/gateway.php";
connection.connect(gateway); //连接amfphp资料夹里的gateway.php
//资料传送成功时
function onResult(Result:String):void {
my_txt.text=Result;
}
//资料传送失败时
function onFault():void {
my_txt.text="连接失败";
}
//按下按钮时
my_btn.addEventListener("click",loadPHP);
function loadPHP(me:MouseEvent){
//呼叫Remote Service中的方法(档案名称.方法名称)
connection.call("HowAreYou.sendStr",responder,your_txt.text);
}
==============================================================================
在Flash测试中不断出现Error #2044: 未处理的 NetStatusEvent:。 level=error,
code=NetConnection.Call.BadVersion at test_fla::MainTimeline/frame1()
以下则是我尝试过的努力
==============================================================================
查到资料,有人说更改amfphp的gateway.php档的第127行
从
$gateway->setCharsetHandler("utf8_decode","ISO-8859-1", "ISO-8859-1");
改为以下各种我皆试过
$gateway->setCharsetHandler("mbstring","UTF-8", "UTF-8"); <---失败
$gateway->setCharsetHandler("utf8-decode","UTF-8", "UTF-8"); <---失败
$gateway->setCharsetHandler("iconv","big5", "big5");<---解决中文乱码;连线失败
$gateway->setCharsetHandler( "mbstring", "gb2312", "gb2312" ); <---失败
後来查出HowAreYou.php的程式码开头是
<? ,将它改为
<?php 後Flash连线依然有Error
先前文章有前辈提到这种Error是php的程式码有错误,但我刚碰php1个月,也看不出哪里
错误,我投降了,烦请这里的高手们能指点一下,非常感谢&感激不尽
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.130.202.135
1F:推 KawasumiMai:<?跟<?php怎麽印象中没差... 10/10 22:02
2F:推 peter10554:我用旧版的范例~也都是都要把<?多加php~不然读不到 10/10 23:57
3F:推 sextitanic:你的php档案是存成 utf-8 的吗? 10/11 00:01
4F:→ sextitanic:如果是的话用第2个 utf8-decode 应该是会有效的 10/11 00:02
5F:→ sextitanic:还有gateway变数的值,要依swf档跟amfphp资料夹 10/11 00:06
6F:→ sextitanic:的相对位置而有所改变 10/11 00:06
-------------------------------------------------------------------
有试过把php另存成 utf-8,还是同样行不通...囧
※ 编辑: fr1432422 来自: 140.130.202.135 (10/11 13:11)
7F:推 STARGAZERs:档案本身要存成 utf-8 设定也要改用 utf-8 10/11 15:38
-------------------------------------------------------------------
拖了好久才来po我找到的解决方法(发这文的隔天就解决了....)
我找到另一个解决方法
将amfphp里的gateway.php打开,
找到第136和138行的程式码(不一定是相同的行数,但是大概在那附近)
第136:
$gateway->disableDebug();
第138:
$gateway->disableStandalonePlayer();
在这两行前面加上 // 把它们变成注解(避免以後又要用到),改成如下
第136:
//$gateway->disableDebug();
第138:
//$gateway->disableStandalonePlayer();
Error 2044的问题就解决
补充在这里给有碰到相同问题的人参考^__^
※ 编辑: fr1432422 来自: 140.130.202.135 (10/18 10:36)