2017-01-26 40 views
4

我想从Actionscripts3中的本地主机PHP读取JSON数据,我发现有些代码可以做到,但是这段代码不起作用。简单的ActionScript 3从PHP读取JSON

PHP:

​​3210

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功能。

回答

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

感谢您的简单代码和您的有用描述。 –

+0

那么你可以在一个函数中通过传递一个回调函数来实现。 – RafH

+0

如何在这段代码中分离JSON数据?例如跟踪或使用变量来存储数据“String1 = 111”“String2 = 222” –