2012-01-08 65 views
0

我尝试使用ActionScript 3ActionScript中检索并返回null值

为ActionScript 3检索通过PHP脚本,并在Flash中显示从数据库中的数据,我有2个功能:

private var postArrayTxt:Array; 

     public function stampTwo() { 
      // constructor code 

      var stampNumber1:MovieClip = new stamp1(); 
      var stampNumber2:MovieClip = new stamp2(); 
      var stampNumber3:MovieClip = new stamp3(); 

      postArrayTxt = new Array(); 
      postArrayTxt[0] = stampNumber1; 
      postArrayTxt[1] = stampNumber2; 
      postArrayTxt[2] = stampNumber3; 
      trace("All stamps works"); 

      retrieveDetailsFromDB(); 

     } 

从数据库检索到的数据将显示在将调用retrieveDetailsFromDB()的各个影片剪辑中。

public function retrieveDetailsFromDB():void { 

      var myLoader:URLLoader = new URLLoader(); 
      myLoader.dataFormat = URLLoaderDataFormat.VARIABLES; 
      myLoader.load(new URLRequest("http://localhost/Converse/stampGalore/tryout.php")); 
      myLoader.addEventListener(Event.COMPLETE, onDataLoad); 

      // Error Handling 
      myLoader.addEventListener(IOErrorEvent.IO_ERROR, onIOError); 
      myLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError); 

      // Could be an error or just a message 
      myLoader.addEventListener(HTTPStatusEvent.HTTP_STATUS, onHTTPStatus); 

      function onDataLoad(evt:Event): void { 
       //var loader:Loader = new Loader(); 
       //stamp221.addChild(loader); 
       //loader.load(new URLRequest(evt.target.data.facebookRemarks)); 
       var delimiter:String = "|^_^|"; 
       var stamp:String = evt.target.data.databaseRemarks; 
       trace(stamp); 

       var stampRemarkArr:Array = new Array(); 
       stampRemarkArr = stamp.split(delimiter); 


       for (var i:Number=0; i<stampRemarkArr.length; i++) { 
        postArrayTxt[i].text = String(stampRemarkArr[i]); 
        trace("ended"); 
       } 
      } 

      // error callbacks 

      function onIOError(evt:IOErrorEvent) { 
       trace("IOError: " + evt.text); 
      } 

      function onHTTPStatus(evt:HTTPStatusEvent) { 
       trace("HTTPStatus: " + evt.status); 
      } 

      function onSecurityError(evt:SecurityErrorEvent) { 
       trace("SecurityError: " + evt.text); 
      } 
     } 

最后但并非最不重要的,这是我的PHP脚本。

<?php 
header("Cache-Control: no-cache, must-revalidate"); 
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); 
include_once "mysqli.connect.php"; 


$sql = "SELECT remarks FROM stamp"; 
$result = $mysqli->query($sql); 
if ($mysqli->errno) 
{ 
    error_log($mysqli->error); 
    return; 
} 


$facebook = ""; 
$counter = 0; 

while ($row = $result->fetch_array()) 
{ 
    $database = $row["remarks"]; 
    $delimiter = "|^_^|"; 

    if ($counter == 0) { 
     $facebook .=$database; 
    } else { 
     //Use a delimiter "|^_^|" to seperate the records 
     $facebook .= $delimiter . $database; 
    } 

    $counter++; 
} 
$mysqli->close(); 

    echo "databaseRemarks=" . $facebook; 
?> 

如果我自己运行php脚本,数据可以从数据库中检索。但是,如果我在Flash中运行,它将返回空值。请帮助我,因为我在这个检索功能上浪费了很多时间。谢谢

回答

0

这是行不通的:

var stamp:String = evt.target.data.databaseRemarks; 

Flash不知道哪种格式您的数据,所以你需要先解析它。所以第一读取数据:

var rawData:String = evt.currentTarget.data; 

然后对其进行分析:

var parsedData:* = someFunctionToParseYourData(rawData); 
+0

您好感谢您的回复!我坚持解析数据。我不知道要在函数中包含什么!非常感谢!!!!! – dada050909 2012-01-08 15:50:27