在AS3 Flash中编辑和保存XML

时间:2014-04-03 14:39:01

标签: php xml actionscript-3 flash save

从今天早上起我就遇到了这个困难,所以我终于决定寻求你的帮助.. 我尝试了很多解决方案,但没有一个能按我的意愿工作。我想加载一个XML文件(本地)并对其进行编辑,然后将结果保存在同一个文件中。 加载/读取不是问题,它工作正常,但在as3中保存文件非常困难。

(nb:我有一个当地的服务员,所以这不是问题)

到目前为止,这是我遇到问题的最佳方法(找到here):

save.php:

<?php
if (isset($GLOBALS["HTTP_RAW_POST_DATA"])){ 
    $xml = $GLOBALS["HTTP_RAW_POST_DATA"]; 
    $file = fopen("http://localhost/cs_texte.xml","wt"); 
    fwrite($file, $xml); 
    fclose($file);
} 
?>

myAs3script.as:

var xmlLoader:URLLoader = new URLLoader();
var xmlData:XML = new XML();

xmlLoader.addEventListener(Event.COMPLETE, LoadXML);

// Loading XML -> works fine     
xmlLoader.load(new URLRequest("http://localhost/cs_texte.xml"));

//When loading complete          
function LoadXML(e:Event):void {
    xmlData = new XML(e.target.data);
    trace(xmlData); // Works fine 

    [.. Do some stuff on xml ..]

    var xmlResponse:XML;
    var xmlURLReq:URLRequest = new URLRequest("http://localhost/save.php");
    xmlURLReq.data = xmlData;
    xmlURLReq.contentType = "text/xml";
    xmlURLReq.method = URLRequestMethod.POST;
    var xmlSendLoad:URLLoader = new URLLoader();
    xmlSendLoad.addEventListener(Event.COMPLETE, completeHandler);
    xmlSendLoad.load(xmlURLReq);

    function completeHandler(evt:Event) {
        trace ('Save complete');
    }           
}

但它没有用,xml文件根本没有改变,即使我试图清空它..

知道为什么吗? (你知道如何在flash输出控制台中获取php错误吗?如果有的话......)

Thansk的帮助! (请放纵,这不是我最初的项目..)

1 个答案:

答案 0 :(得分:0)

感谢Andrey Popov我发现了问题,这只是一个绝对网址而不是相对网址的问题。 所以你需要从你的PHP文件中提供一个相对地址:

<?php
if (isset($GLOBALS["HTTP_RAW_POST_DATA"])){ 
    $xml = $GLOBALS["HTTP_RAW_POST_DATA"]; 
    $file = fopen("cs_texte.xml","wt"); 
    fwrite($file, $xml); 
    fclose($file);
} 
?>

就是这样,但它让我真的很难过! 感谢帮我弄明白,希望能帮助别人!