从今天早上起我就遇到了这个困难,所以我终于决定寻求你的帮助.. 我尝试了很多解决方案,但没有一个能按我的意愿工作。我想加载一个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的帮助! (请放纵,这不是我最初的项目..)
答案 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);
}
?>
就是这样,但它让我真的很难过! 感谢帮我弄明白,希望能帮助别人!