【问题标题】:Flash ActionScript 3.0 URL connection only works when being tested and fails when publishedFlash ActionScript 3.0 URL 连接仅在测试时有效,在发布时失败
【发布时间】:2014-03-05 03:39:32
【问题描述】:

我有一个程序(如 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();

【问题讨论】:

  • 你的服务器上有跨域文件吗?

标签: php actionscript-3 flash urlloader


【解决方案1】:

查看 adobe flash 安全策略。您的服务器根目录中应该有一个跨域 xml 文件。 在调试模式下它总是可以工作,因为安全被跳过了。

看看这篇 AS3 | SWF load issue 或谷歌关于在 flash 中使用 cross-domain.xml 文件的帖子。

【讨论】:

  • 谢谢!!!我正准备把我的电脑扔出窗外,因为我已经尝试解决这个问题将近 2 周了。
  • 哦.. 请不要那样做。始终在错误处理的测试阶段放置 alert.show(error) ......你永远不知道在发布的版本中会出现什么问题......
猜你喜欢
  • 1970-01-01
  • 2014-03-25
  • 1970-01-01
  • 2021-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-26
  • 2017-01-24
相关资源
最近更新 更多