2012-06-21 3 views
4

Я пытаюсь динамически создать файл XML с помощью PHP, как это:Динамически созданный XML из PHP в Actionscript 3

header ("content-type: text/xml"); 

    // create doctype 
    $dom = new DOMDocument("1.0"); 

    // create root element 
    $root = $dom->createElement("tracklist"); 
    $dom->appendChild($root); 
    $dom->formatOutput=true; 

    // create child element 
    foreach ($commonPlaylist as $value) { 

    $trackArray = getTrackForID($value['ID']); 

    $item = $dom->createElement("track"); 
    $root->appendChild($item); 

    foreach ($trackArray as $key => $value) { 
     $attr = $dom->createAttribute($key); 
     $item->appendChild($attr); 

      $attrValue = $dom->createTextNode($value); 
     $attr->appendChild($attrValue); 
    } 

    } 

echo $dom->saveXML(); 

Выход файла нормальный рабочий XML

<?xml version="1.0"?> 
    <tracklist> 
     <track ID="4" title="Track01" artist="Artist01" url="" length="" coverURL=""/> 
     <track ID="1" title="Track02" artist="Artist02" url="" length="" coverURL=""/> 
     <track ID="8" title="Track03" artist="Artist03" url="" length="" coverURL=""/> 
    </tracklist> 

Однако если Я хочу, чтобы получить эти данные в as3 с помощью следующего кода:

var myLoader:URLLoader = new URLLoader(); 
myLoader.load(new URLRequest("getPlaylist.php")); 
myLoader.addEventListener(Event.COMPLETE, processXML); 

function processXML(e:Event):void 
{ 
    var myXml:XML= new XML(e.target.data); 
    trace(myXml); // The variable is being traced. 

}

Я вообще не получаю никакого вывода. Если я прочитаю файл как String, я получу весь код PHP. Что я делаю не так?

Заранее благодарю за любую помощь.

С уважением, Маттео

ответ

3

Если я прочитал файл в виде строки Я получаю весь код PHP

Похоже, что он не выполняется на стороне сервера. Вы размещаете его на сервере с установленным PHP?

+0

Я мог так сильно ударить себя в лицо прямо сейчас. Я тестирую это на локальном сервере. Я всегда проверял файл в своем браузере, как этот http: // localhost: 8888/Project/getCommonPlaylist.php, когда я загрузил его в файл флеш без localhost: 8888, поэтому PHP не работал. Большое спасибо!!! – matteok

+0

Яп был прав, я просто должен был подождать несколько минут, пока не смогу принять. благодаря – matteok

2

Проверьте имя переменной

  • Вы трассировку myXML & имя переменной XML является myXml
+0

Я набрал это, когда писал свой вопрос. Это не проблема внутри моего кода. – matteok

+0

Хорошо, исправлено имя переменной. Как проследить вывод результатов запроса URL-адреса перед созданием нового объекта XML? Это показывает результат? исправьте меня, если я ошибаюсь. Я предполагаю, что это не будет, поскольку URL должен указывать схему * http: // * 'localhost/getPlaylist.php' – fineTuneFork

0

Действительно ли processXML() действительно срабатывает? Попробуйте изменить его, как в следующем коде, и посмотрите, получаете ли вы «Привет!». часть прослеживается.

function processXML(e:Event):void 
{ 
    trace('Hi!'); 
    var myXml:XML= new XML(e.target.data); 
    trace(myXML); 
} 

BTW, используя флэш-отладчик может быть гораздо полезнее пытаться угадать, что пошло не так :) Так как один поставляется с Flash Professional сосет большое время я могу только рекомендовать DeMonster debugger который спас меня много времени, пока работая над Flash-проектами. Это также не помешает иметь инструмент анализа трафика HTTP, такой как Fiddler.

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