2010-08-10 146 views
0

所以我写这个动作脚本程序,将调用一个PHP文件,它将返回文件夹内的文件名。AS3没有运行我的PHP脚本

我的PHP文件看起来像这样

<?php 
    $dirname = "thumbs"; 
    $ret =array(); 
    if($dir = opendir($dirname)){ 
     $i=0; 
     while($file = readdir($dir)){ 
      if($file != '.' && $file != '..'){ 
       $ret["file" . $i] = $file; 
       $i++; 
      } 

     } 
     $returnString = http_build_query($ret); 
     echo $returnString; 
    } 

?> 

,如果我只是运行这个本身我会得到

file0=back-matter.pdf&file1=ch1.pdf&file2=ch2.pdf&file3=ch3.pdf&file4=ch4.pdf&file5=ch5.pdf&file6=ch6.pdf&file7=ch7.pdf&file8=ch8.pdf&file9=ch9.pdf&file10=front-matter.pdf 

和那些文件夹中的拇指里面的文件。现在我想在我的动作脚本中调用它,并能够在我的动作脚本中获得相同的输出。

这是我的动作脚本文件:

package 
{ 
    import flash.display.MovieClip; 
    import flash.display.Loader; 
    import flash.net.URLRequest; 
    import flash.net.URLLoader; 
    import flash.net.URLVariables; 
    import flash.net.URLRequestMethod; 
    import flash.net.URLLoaderDataFormat; 
    import flash.events.Event; 

    public class Main extends MovieClip 
    { 
     public var thumbFolder:String = "thumbs"; 
     public var markerFolder:String = "marker"; 
     public var folderGetterPHP:String = "getter.php"; 

     public function Main() 
     { 
      var urlRequest:URLRequest = new URLRequest(folderGetterPHP); 
      var urlLoader:URLLoader = new URLLoader(); 

      urlRequest.method = URLRequestMethod.GET; 
      urlLoader.dataFormat = URLLoaderDataFormat.VARIABLES; 
      urlLoader.addEventListener(Event.COMPLETE, completeHandler); 
      urlLoader.load(urlRequest); 
     } 

     public function completeHandler(evt:Event):void 
     { 
      trace(evt.target.data); 
     } 
    } 
} 

我跑了,我得到这个

Error: Error #2101: The String passed to URLVariables.decode() must be a URL-encoded query string containing name/value pairs. 
    at Error$/throwError() 
    at flash.net::URLVariables/decode() 
    at flash.net::URLVariables() 
    at flash.net::URLLoader/onComplete() 

我也试着设置

urlLoader.dataFormat = URLLoaderDataFormat.TEXT; 

,但我只拿到了我的PHP源代码显示为输出。有人可以向我解释如何让我的php的输出显示在闪存中。

回答

0

尝试这样的事情,并进行修改以满足您的需求:

<? 
function FindmyDir($php_self){ 
$file = explode("/", $php_self); 
for($i = 0; $i < (count($file) - 1); ++$i) { 
$filename2 .= $file[$i].'/'; 
} 
return $filename2; 
} 
echo FindmyDir($_SERVER['PHP_SELF']); 
?> 

您还必须strreplace的“/”字符或“\”。

0

尝试用:

urlLoader.dataFormat = URLLoaderDataFormat.BINARY; 
+0

当提供解决问题的代码,最好是也给至少它是如何工作这么一个简短的说明人们阅读并不需要从心理上逐行解析它来理解差异。 – Fluffeh 2012-09-27 11:28:41