首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >#2101:传递给URLVariables.decode()的字符串必须是包含名称/值对的URL编码的查询字符串。

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

Stack Overflow用户
提问于 2012-07-16 16:56:31
回答 2查看 5.9K关注 0票数 2

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

代码语言:javascript
复制
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');
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-07-16 17:36:01

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

票数 1
EN

Stack Overflow用户

发布于 2014-05-20 10:56:53

PHP回答:问题出在

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

我之所以发布这篇文章,是因为除非查看者阅读评论,否则他们不会知道问题是什么以及解决方案。提出这个问题的Anil表示,这是PHP的问题,而不是as3的问题,但没有给出原因。上面标记为正确的答案似乎不是一个充分的答案,因为它只是建议了一种可能的解决方案。Anil承认这是php的一个问题。我相信这个答案更完整,可以帮助有同样问题的人。

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

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

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

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

代码语言:javascript
复制
if($ConfirmedEmail=="true")
{
    echo "Status=true";
}
if($ConfirmedEmail=="false")
{
    echo "Status=false";
}

,但如果它既不是真也不是假,则不会输出任何内容。= Flash不喜欢!

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

代码语言:javascript
复制
if($ConfirmedEmail=="true")
{
    echo "Status=true";
}
else if($ConfirmedEmail=="false")
{
    echo "Status=false";
}
else
{
    echo "Status=Nada";
}

下面是我的AS3代码,供您查看。希望这能帮助到别人。

代码语言:javascript
复制
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);
}
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11500974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档