2016-05-27 14 views
2

私はas3を使ってフラッシュcs6で航空アプリを構築しています。私はphpから配列as3.0を送る必要があります 私は自分のアプリケーションに "タイムライン"を作りたかったのです。 私は様々な参考文献をたくさん読んでいますが、あまり役に立ちません。 これは私が使用するコードです。 timeline.phpファイルPHPから配列をas3.0に送信

require_once "connect.php"; 
$action = isset($_GET['action'])?$_GET['action']:''; 
$body_nama = array(); 
$body_postingan = array(); 
$total_likers = array(); 
$id = array(); 
switch($action){ 
    case 'posting': 
    posting(); 
    break; 
    case 'like': 
    like(); 
    break; 
    case 'delet_ini': 
    deletIni(); 
    break; 
    case 'load_timeline': 
    loadTimeline(); 
    break; 
    case 'load_timeline_lama': 
    loadTimelineLama(); 
    break; 
} 
function loadTimeline(){ 
    global $body_nama; 
    global $body_postingan; 
    global $total_likers; 
    global $id; 

    $query_total = "SELECT COUNT(*) FROM timeline_posts"; 
    $result_total = mysql_query($query_total); 
    $total = mysql_result($result_total,0); 

    for ($i =0; $i<=9; $i++){ 
     $query_timline = "SELECT * FROM timeline_posts WHERE id = ('$total'-'$i')"; 
     $result = mysql_query($query_timline); 
     while ($data = mysql_fetch_array($result)){ 
      $body_nama[$i] = htmlentities($data['timeline_name']); 
      $body_postingan[$i] = htmlentities($data['timeline_post']); 
      $id[$i] = htmlentities($data['id']); 
      print "nama[$i]=$body_nama[$i]"; 
      print "postingan[$i]=$body_postingan[$i]"; 
      print "id[$i]=$id[$i]"; 
     } 
    } 
} 

、ここAS3.0コード

function loadTimeline(){ 
    var phpFileRequest:URLRequest = new URLRequest("http://localhost/social_media_1/timeline.php?action=load_timeline"); 
    var phpLoader:URLLoader = new URLLoader(); 
    phpLoader.dataFormat = URLLoaderDataFormat.VARIABLES; 
    phpLoader.addEventListener(Event.COMPLETE, onCompleteLoadTimeline); 
    phpLoader.load(phpFileRequest); 

    function onCompleteLoadTimeline(event:Event){ 

     trace (event.target.data.nama[0]); 
     trace (event.target.data.postingan[0]); 
     trace (event.target.data.id[0]); 

    } 
} 

ですが、私はエラーを持っています。 TypeError:エラー#1010:用語は定義されておらず、プロパティもありません。機能/ MasagiApp_flaで :MainTimeline/loadTimeline/MasagiApp_fla:onCompleteLoadTimeline()MasagiApp_fla.MainTimeline :: frame6:52] flash.events::EventDispatcher/dispatchEventでflash.events::EventDispatcher/dispatchEventFunction() で() flash.net::URLLoader/onComplete()

であなたがそれを行うと、文字列にデータをアセンブルしないでください

+0

私はあなたが 'loadTimeline'関数の外で' onCompleteLoadTimeline'機能を動かすべきだと思います。 –

+0

非常に速い応答のおかげで、出力に変化はありません。 –

答えて

0

に私を助けてください。あなたのケースでは、結果は有効なURLエンコードされた文字列(たとえば、&がありません)であり、コード内で期待どおりに自動的に配列に変換されません。

JSONまたはXMLは、特に何らかの構造がある場合にデータを交換するのに適した形式です。私はこの答えに前者を使用します。

構造といえば、複数の配列にまたがって属しているデータを分散させると、が無効構造になります。単一のプロパティを持つ配列を多く持たず、代わりに1つの配列を持ち、プロパティをまとめてオブジェクトをグループ化します。あなたのケースでは

は、一つの目的は、JSONで次のようになります性質namepostingIDを、持っている:

{ 
    "name":"foo", 
    "posting":"bar", 
    "ID":"123" 
} 

あなたは多くのそのようなオブジェクトを持っているとして、彼らは配列である:

[ 
    { 
     "name":"foo", 
     "posting":"bar", 
     "ID":"123" 
    }, 
    { 
     "name":"foo000oo", 
     "posting":"baAAaar", 
     "ID":"456" 
    } 
] 

これは、サーバーからの応答の本文がどのように表示されるかを示しています。 PHPで 、あなたは(はい、Jonny Henly @互いの中にあなたが巣の機能いけない右の帽子です!)クライアント側ではJSON表現as you can see in this other answer

にデータベースからデータを取得するためにmysqli_fetch_assoc()json_encode()を持っているJSON.parse()受信した文字列とは、結果として、一般的なAS3 Objectを得る:

function onCompleteLoadTimeline(event:Event) 
{ 
    var result:Object = JSON.parse(event.target.data); 

    trace (result[0].name); // should give first name 
} 
関連する問題