我有良好的PHP和AS3知识,但没有关于连接两个。 我正在尝试使用AS3将数据发送到PHP,并让PHP将它们保存到XML中。PHP应该如何反应一次动作POST数据到它?
我不明白的是php应该如何对外部代码做出反应。 AS3脚本没有启动页面,对吗?它只是发送数据给它?只是执行动作端不起作用,也不会手动在浏览器中加载php(使用apache正确运行,胡扯回声的功能)或在AS3发送后重新加载它。 xml保持为空,没有要跟踪的返回值。所有的教程都会在之前和之后处理,假设我知道php是如何反应从AS3接收数据的。有人能告诉我我错过的链接吗?
如果它的事项,我的相关AS3:
public function xt(e:MouseEvent):void
{
marque = tmarque.text;
prix = tprix.text;
couleur = tcouleur.text;
xmlString = "<?xml version='1.0' encoding='utf-8'?>";
fichier = new XML(xmlString);
fichier = <ordinateurs />;
fichier.marque = marque;
fichier.couleur = couleur;
fichier.PRIX = prix;
var req = new URLRequest("C:/xampplite/htdocs/save_xml.php");
//(have also tried placing the php in same folder)
req.data = fichier;
req.contentType = "text/xml";
req.method = URLRequestMethod.POST;
var xmlSendLoad:URLLoader = new URLLoader();
xmlSendLoad.addEventListener(Event.COMPLETE, onComplete, false, 0, true);
xmlSendLoad.addEventListener(IOErrorEvent.IO_ERROR, onIOError, false, 0, true);
xmlSendLoad.load(req);
}
function onComplete(event:Event):void {
try {
var xmlResponse = new XML(event.target.data);
TXTtesticle.text = xmlResponse;
removeEventListener(Event.COMPLETE, onComplete);
removeEventListener(IOErrorEvent.IO_ERROR, onIOError);
} catch (err:TypeError) {
TXTtesticle.text = "An error occured when communicating with server:\n" + err.message;
}
trace (xmlResponse);
placeText();
}
和PHP
<?php
if (isset($GLOBALS["HTTP_RAW_POST_DATA"]))
{
$xml = $GLOBALS["HTTP_RAW_POST_DATA"];
$file = fopen("data.xml","wb");
fwrite($file, $xml);
fclose($file);
echo($GLOBALS["HTTP_RAW_POST_DATA"]);
}
?>
这里使用'echo'没有用。相反,登录到文件(您可以重复使用PHP错误日志['trigger_error()'](http://php.net/trigger_error)函数,只需启用PHP错误日志记录)。这非常重要,因为回声将进入涅ana,因为您不会在AS代码中输出回应。而不是fopen + fwrite + fclose,我建议使用['file_put_contents()'](http://php.net/file_put_contents)。如果在'$ xml'旁边的条件中使用另一个变量,那么在$ GLOBALS [“HTTP_RAW_POST_DATA”]不仅看起来很腥的情况下,您可以轻松更改代码。 – hakre 2014-12-19 14:53:26