我有一个程序(如3.0 .swf),它包含用户名,电子邮件和他们想要接收的所需信息。然后它创建一个电子邮件并将这些变量传递给我的服务器,其中php文件将其发送到用户输入的电子邮件。当我在flash中测试程序时,效果很好。电子邮件直接通过。但是当我导出它时程序无法连接。我的设置是“仅限访问网络”。我也发布了AIR和html版本,但都不起作用。我花了2个半小时搜索,发现人们有同样的问题,但没有答案。这是阻止我启动程序的唯一因素!
继承我的代码:
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();
答案 0 :(得分:1)
看看adobe flash安全策略。您应该在服务器的根目录中有一个跨域xml文件。 在调试模式下,它总是有效,因为跳过了安全性。
请查看此帖子AS3 | SWF load issue或Google,了解如何在Flash中使用跨域文件。