#2101:传递给URLVariables.decode()的String必须是包含名称/值对的URL编码查询字符串

时间:2012-07-16 08:56:31

标签: php actionscript-3 flash

我有这个flash代码。它将我的游戏中的得分和用户名发送到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');
    }

2 个答案:

答案 0 :(得分:4)

答案:问题出在PHP

- 您必须将var返回给AS3,否则您将收到此错误。

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

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

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

错误:错误#2101:传递给URLVariables.decode()的String必须是包含名称/值对的URL编码查询字符串。     at Error $ / throwError()     在flash.net::URLVariables/decode()     在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);
}

答案 1 :(得分:1)

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