0

AS3でMySQL結果配列を読み取る方法を誰かが説明できるかどうか疑問に思っていました。

私は使っている:

var loader:URLLoader = new URLLoader();
var urlReq:URLRequest = new URLRequest("http://domain.com/get-api.php");
var urlVars:URLVariables = new URLVariables();
loader.dataFormat = flash.net.URLLoaderDataFormat.TEXT;
urlReq.method = URLRequestMethod.POST;
urlReq.data = urlVars;
urlVars.mySubmittedRateID = GlobalVariables.mySubmittedRateID;
urlVars.myPostcode = GlobalVariables.currentPostcode;
loader.addEventListener(flash.events.Event.COMPLETE, getDataOnComplete);
loader.load(urlReq);

パラメーター (実際には 2) を get-api.php ファイルに渡します。このファイルでは、PHP でパラメーターを読み取り、パラメーターに一致するすべての結果を取得する通常の SQL select where ステートメントを使用します。

私の getDataOnComplete 関数は次のとおりです。

private function getDataOnComplete(event:flash.events.Event):void
{
    var loader:URLLoader = new URLLoader(event.target);
    var resultsArray:Array = JSON.decode(loader.data);
}

私のPHP:

$row_array['done'] = "true";
return json_encode($row_array);

エラー:

Error: Error #2101: The String passed to URLVariables.decode() must be a URL-encoded query string containing name/value pairs.
at Error$/throwError()
at flash.net::URLVariables/decode()
at flash.net::URLVariables()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/onComplete()

何らかの理由で、getDataOnComplete 関数に到達することさえできません。

4

1 に答える 1

0

あなたのphp mysqlの結果は配列になります

PHP側では、結果配列をjson_encode($result_array)のように変換する必要があります

echo json_encode($result_array); //Note here not return statement;

as3側で

ネイティブ JSON クラス (ここでは AIR クラスを使用) またはas3corelibを持つ最新の AIR SDK を使用して、JSON データを解析できます。

private function getDataOnComplete(event:flash.events.Event):void
{
  var resultObj:Object = event.target.data;
  var resultsArray:Object = JSON.stringify(resultObj);
}

詳細についてはpass-an-array-from-php-to-actionscript-3

于 2013-01-04T07:52:38.383 に答える