2014-04-03 94 views
0

从今天上午开始,我一直有这个困难,所以我最终决定寻求你的帮助。 我尝试了很多解决方案,但都没有按需要工作。我想加载一个XML文件(本地)并编辑它,然后将结果保存在同一个文件中。 加载/读取不是问题,它工作正常,但保存文件是非常困难的as3。在AS3 Flash中编辑和保存XML

(注:我有一个本地serveur,所以这不是问题)

这里是我最好的问题的方法至今(发现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

试着回应一切从PHP - 它会回来作为结果加载器。检查完整处理程序中的结果。您甚至可以将所有内容都包含在try-catch中并回显错误,以便您可以在Flash中看到它。另一个好方法是在浏览器中测试它并查看http请求。 我认为问题出在文件的路径上,因为我认为需要本地路径才能拥有写权限。反正 - 回声一切,你会抓住它!祝你好运! –

+0

哦,并且一定要添加错误处理程序以及IOError,以确保PHP执行的结果。 –

+0

你检查了这个:http://stackoverflow.com/questions/6481243/saving-flash-as3-data-to-xml/6484450#6484450? - 如果你使用AIR,你也可以使用'FileStream'来保存它而不用打开一个对话框 – divillysausages

回答

0

感谢Andrey Popov我想通了这个问题,它只是一个绝对URL,而不是相对URL的问题.. 所以,你需要给从你的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); 
} 
?> 

这只是,但它让我真的很难过! 感谢帮我想通了,希望能帮到别人!