我有良好的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