我试图在ActionsScripts3中从localhost PHP读取JSON数据,我找到了一些代码来执行此操作,但此代码不起作用。
PHP:
<?php
$arr = array ('DATA1'=>"111",'DATA2'=>"222");
header('Content-Type: application/json');
echo json_encode($arr);
?>
AS3:
import flash.events.*;
import flash.net.*;
var urlLoader:URLLoader=new URLLoader();
function ReadJsonPhp () :void
{
addEventListener(Event.COMPLETE,init);
}
function init(event:Event)
{
urlLoader.load(new URLRequest("http://localhost/asphp.php"));
urlLoader.addEventListener(Event.COMPLETE, urlLoaderCompleteHandler);
}
function urlLoaderCompleteHandler(e:Event):void
{
trace(e.target.data) ;
var arrayReceived:Object = JSON.parse(e.target.data);
}
ReadJsonPhp();
如果可能,此代码有3个功能我只想使用1个功能。
答案 0 :(得分:2)
您不能仅仅因为它是异步操作而在一个函数中执行此操作。您提出请求然后等待一些回复。 AS3代码错了,没有任何意义。这是一个简单的例子:
private var loader:URLLoader;
private var request:URLRequest;
private function load():void
{
request = new URLRequest("http://localhost/asphp.php");
loader = new URLLoader()
loader.addEventListener(Event.COMPLETE, onComplete);
loader.addEventListener(IOErrorEvent.IO_ERROR, onError);
loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onError);
loader.load(request);
}
private function onError(e:Event):void
{
// handle error
}
private function onComplete(e:Event)
{
trace(e.target.data);
// keep in mind that if the Json string is invalid here will be SyntaxError exception!
var json:Object = JSON.parse( e.target.data );
trace( "json.DATA1 = ", json.DATA1 );
trace( "json.DATA2 = ", json.DATA2 );
}