简单的ActionScripts 3从PHP读取JSON

时间:2017-01-26 10:19:28

标签: actionscript-3

我试图在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个功能。

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 );
    }