2014-03-05 11 views
0

我有一個程序(如3.0 .swf),它接收用戶名,電子郵件以及他們想要接收的所需信息。然後它會創建一個電子郵件並將這些變量傳遞到我的服務器,在那裏一個php文件將它發送給用戶輸入的電子郵件。當我在Flash中測試程序時效果很好。電子郵件通過。但是,當我導出它的程序無法連接。我的設置是「僅限訪問網絡」。我也發佈了一個AIR和html版本,但都沒有成功。我花了2個半小時搜索,發現有同樣問題但沒有答案的人。這是阻止我啓動程序的唯一因素!Flash ActionScript 3.0 URL連接僅在測試時有效,發佈時失敗

繼承人我的代碼:

import flash.events.Event; 

//---------------Setup variables 
var loader:URLLoader = new URLLoader(); 
var req:URLRequest = new URLRequest("http://myserver/phpfile.php"); 


var variables:URLVariables = new URLVariables(); 
loader.dataFormat = URLLoaderDataFormat.VARIABLES; 
req.method = URLRequestMethod.POST; 
var Info:String = ""; 
//tab index 
txName.tabIndex = 0; 
txEmail.tabIndex = 1; 
//listener fot textfield changes 
txName.addEventListener(Event.CHANGE, txErrorCheck); 
txEmail.addEventListener(Event.CHANGE, txErrorCheck); 
function txErrorCheck(event:Event):void { 
if (txError.text.length>0) { 
    txError.text = ""; 
} 
} 
SEND.addEventListener(MouseEvent.CLICK, sendForm); 
function sendForm(evt:MouseEvent):void { 
if (txName.text.length<=0) { 
    txError.text = "Please Enter A Name"; 
} else if (!txEmail.text.length || txEmail.text.indexOf("@") == -1 ||  txEmail.text.indexOf(".") == -1) { 
    txError.text = "Please Enter A Valid Email!"; 
} else { 
    mcLoader.gotoAndPlay(2); 
    variables.senderName = txName.text; 
    variables.senderEmail = txEmail.text; 
    variables.Info = Info; 
    req.data = variables; 
    loader.load(req); 
    loader.addEventListener(Event.COMPLETE, receiveLoad); 
} 
} 
function receiveLoad(evt:Event):void { 
if (evt.target.data.retval == 1) { 
    mcLoader.gotoAndStop(25); 
} else { 
    mcLoader.gotoAndStop(1); 
    txError.text="** SERVER ERROR **"; 
} 
} 
//Reset form 
function resetForm(evt:MouseEvent):void { 
txName.text=""; 
txEmail.text=""; 
} 
stop(); 
+1

你的服務器上有跨域文件嗎? – Marty

回答

1

看一看的Adobe Flash安全polocies。你應該在你的服務器的根目錄下有一個跨域的xml文件。 在調試模式下,它總是有效,因爲安全被跳過。

看看這篇文章AS3 | SWF load issue或谷歌有關在Flash中使用cross-domain.xml文件。

+0

謝謝!我準備把我的電腦扔出窗外,因爲我一直試圖將這個問題推出近2周,現在一無所有。 – user3381715

+0

哦..請不要那樣做。當你處於測試階段時,Alsways會發出alert.show(錯誤)錯誤,你不知道發佈版本中會出現什麼錯誤... –

相關問題