2017-01-26 3 views
4

Я пытаюсь прочитать данные JSON с localhost PHP в ActionsScripts3, я нашел код для этого, но этот код не работает.Простые ActionScripts 3 читать JSON от 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(); 

Этот код имеет 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» –

Смежные вопросы