2

我有这个闪存代码。它将我游戏中的分数和用户名发送到 savescores.php。但我有上面的错误。我已将 URLLoaderDataForma.VARIABLES 更改为 TEXT,但仍然发生相同的错误。我应该怎么做才能解决这个问题?提前致谢..

private function SendScore(score:int) 
    {
        var variables:URLVariables = new URLVariables();
        variables.score = score;
        variables.username = username;
        var urlloader:URLLoader = new URLLoader();

        var urlrequest:URLRequest = new URLRequest('http://localhost:90/savescores.php');
        urlrequest.method = URLRequestMethod.POST;
        urlrequest.data = variables;
        urlloader.dataFormat = URLLoaderDataFormat.TEXT;

        urlloader.load(urlrequest);
        urlloader.addEventListener(Event.COMPLETE, CompleteHandler, false, 0, true);
        urlloader.addEventListener(IOErrorEvent.IO_ERROR , ErrorHandler, false, 0, true);
    }

    private function CompleteHandler(e:Event) 
    {
        var vars:URLVariables = new URLVariables(e.target.data);
        if(vars.success) trace('Saving succeeded');
        else ('Saving failed');
    }

    private function ErrorHandler(e:IOErrorEvent) 
    {
        trace('Error occured');
    }
4

2 回答 2

4

答案:问题出在 PHP 上

-- 你必须返回一个 var 到 AS3 否则你会得到这个错误。

我发布这个是因为除非观众阅读评论,否则他们不会知道问题所在和解决方案。提出这个问题的 Anil 表示这是 PHP 而不是 as3 的问题,但没有说明原因。上面标记为正确的答案似乎不是一个充分的答案,因为它只提出了一个可能的解决方案。Anil 承认这是 php.ini 的问题。我相信这个答案更完整,可以帮助遇到同样问题的人。

我有一个类似的问题。问题出在 php.ini 中。除非你从 php 输出一些东西,否则你会得到这个错误。

Flash 不喜欢从 php 返回任何内容,并给出以下错误:

错误:错误 #2101:传递给 URLVariables.decode() 的字符串必须是包含名称/值对的 URL 编码查询字符串。在 Flash.net::URLVariables/decode() 的 Error$/throwError() 在 flash.net::URLVariables() 在 flash.net::URLLoader/onComplete()

这是我的 PHP 的一部分,它没有返回任何内容:

if($ConfirmedEmail=="true")
{
    echo "Status=true";
}
if($ConfirmedEmail=="false")
{
    echo "Status=false";
}

但如果它既不是真/假,它也不会输出任何东西。= Flash 不喜欢!

所以 PHP 代码必须是这样的:

if($ConfirmedEmail=="true")
{
    echo "Status=true";
}
else if($ConfirmedEmail=="false")
{
    echo "Status=false";
}
else
{
    echo "Status=Nada";
}

这是我的AS3代码供您查看。希望它可以帮助某人。

public function checkEmail(e:Event = null)
{

    var urlreq = new URLRequest("http://www.MyWebsite.com/myScript.php");
    urlreq.method = URLRequestMethod.POST;

    var urlvars = new URLVariables();
    urlvars.userID = Main.userID;


    urlreq.data = urlvars;

    var loader:URLLoader = new URLLoader(urlreq);
    loader.addEventListener(Event.COMPLETE, completed);
    loader.dataFormat = URLLoaderDataFormat.VARIABLES;
    loader.load(urlreq);
}

public function completed(event:Event):void
{
    var variables:URLVariables = new URLVariables(event.target.data);
    trace("Email Confirmed: " + variables.Status);
}
于 2014-05-20T02:56:52.683 回答
1

我认为问题不在于请求,而在于响应处理。您将 var 实例化为URLVariables,但可能e.target.data不符合预期的格式。跟踪e.target.data值以获取更多信息。

于 2012-07-16T09:36:01.260 回答