concoquo

AS3でPHPにデータを渡す

Actionscript3.0になってから初めてPHPとやりとりすることがあったので簡単にメモ。

PHPからの戻りを受け取る場合

URLRequest,URLLoader,URLVariablesを絡めて

var urlRequest:URLRequest = new URLRequest( "XXX.php" );
var urlVariables:URLVariables = new URLVariables();
var urlLoader:URLLoader;
function onClickHandler( e:MouseEvent ):void{
	urlRequest.method = URLRequestMethod.POST;
	urlRequest.data = urlVariables;
	urlLoader = new URLLoader( urlRequest );
	urlLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
	urlLoader.load( urlRequest );
	urlLoader.addEventListener( Event.COMPLETE, onDataComplete);
}

function onDataComplete( e:Event ):void{
	var v:URLVariables = new URLVariables( e.target.data );
}

URLVariablesにデータを格納
URLRequest.dataにURLVariablesを指定
URLLoaderでURLRequestをload(なぜかload)
URLLoaderのEvent.COMPLETEをトリガーにして戻りを受け取り
みたいな流れ。

PHPに値を投げて戻りを受け取らない場合

データを投げた後、そのままPHPに画面遷移する場合はURLLoaderは必要なく

var urlRequest:URLRequest = new URLRequest( "XXX.php" );
var urlVariables:URLVariables = new URLVariables();

function onClickHandler( e:MouseEvent ):void{
	urlRequest.method = URLRequestMethod.POST;
	urlRequest.data = urlVariables;
	navigateToURL( urlRequest, "_self" );
}

URLVariablesにデータを格納
URLRequest.dataにURLVariablesを指定
navigateToURLでURLRequestにページ遷移
な流れ。

AS2のgetURLではデフォルトでは同一画面で遷移してたはずだけど、AS3のnavigateToURLでは新規で立ち上がるようになってたんだ。

ついでに、POSTで渡った変数とその値をPHP側で確認する記述。

<?php
	$q = "";
	foreach( $_POST as $key => $value ){
		$q .= $key . " : " . $value . "<br />";
	}
	echo $q;
?>