2017-01-26 1 views
4

Ich versuche, JSON-Daten von localhost PHP in ActionsScripts3 zu lesen, fand ich etwas Code, um es zu tun, aber dieser Code funktioniert nicht.Einfache ActionScripts 3 lesen JSON aus PHP

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

Dieser Code haben 3 Funktion, wenn möglich Ich mag nur 1 Funktion verwenden.

Antwort

2

Sie können es nicht in einer Funktion tun, nur weil es eine asynchrone Operation ist. Sie stellen eine Anfrage und warten auf eine Antwort. Der AS3-Code ist einfach falsch und ergibt keinen Sinn. Hier ist ein einfaches Beispiel:

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

Danke für Ihre einfachen Codes und Ihre nützliche Beschreibung. –

+0

Nun, Sie können es in einer Funktion tun, indem Sie einen Callback an die Ladefunktion übergeben. – RafH

+0

Wie möglich separate Daten von JSON in diesem Code? Trace oder verwenden Sie Variable zum Speichern von Daten "String1 = 111" "String2 = 222" –