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 にありました

-- AS3 に var を返さなければ、このエラーが発生します。

視聴者がコメントを読まないと、問題の内容と解決策がわからないため、これを投稿します。この質問をした Anil は、as3 ではなく PHP の問題であると述べましたが、その理由については明らかにしませんでした。上記で正しいとマークされた回答は、可能な解決策を示唆しているだけなので、十分な回答ではないようです。Anil は、それが php の問題であることを認めました。この回答はより完全であり、同じ問題を抱えている人を助けることができると思います.

同様の問題がありました。問題はphpにありました。PHP から何かを出力しない限り、このエラーが発生します。

Flash は、php から何も返されないことを嫌い、次のエラーを出しました。

エラー: エラー #2101: URLVariables.decode() に渡される文字列は、名前と値のペアを含む URL エンコードされたクエリ文字列でなければなりません。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";
}

しかし、それが true/false のどちらでもない場合、何も出力しません。=フラッシュは苦手!

したがって、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

問題はリクエストではなく、レスポンスの処理にあると思います。vars をURLVariablesとしてインスタンス化していますが、おそらくe.target.dataが期待される形式に準拠していません。詳細情報を取得するには、 e.target.data値をトレースします。

于 2012-07-16T09:36:01.260 に答える