ActionScript - 联系表单不起作用

Posted

技术标签:

【中文标题】ActionScript - 联系表单不起作用【英文标题】:ActionScript - Contact Form Not Working 【发布时间】:2013-03-19 15:24:03 【问题描述】:

我正在尝试调试在 Flash 中构建的联系表单,但我不确定如何进行调试。从 ActionScript 中,我可以看出它应该将结果发布到 /assets/files/functions.php。问题是,当我填写字段并单击“发送”(应该会触发此操作)时,什么也没有发生,我无法判断这是 PHP 问题还是 Flash 问题。

关于如何调试这个有什么想法吗?

网站可以是found here,点击“连接”,然后点击“发送查询”即可看到表格。

代码如下:

lvOut = new LoadVars();               //create lv object  
lvIn = new LoadVars();                //create lv object
lvIn.onLoad = function (success) 
if(success)
    gotoAndPlay("success");
else
    gotoAndPlay("failure");



function submit() 
if ( (inputName.text != "") && (inputAddress.text != "") && (inputCity.text != "") && (inputState.text != "") 
      && (inputCountry.text != "") && (inputTelephone.text != "") && (inputEmail.text != "") ) 
        lvOut.input_name = inputName.text;
        lvOut.input_address = inputAddress.text;
        lvOut.input_city = inputCity.text;
        lvOut.input_state = inputState.text;
        lvOut.input_zip = inputZip.text;
        lvOut.input_country = inputCountry.text;
        lvOut.input_telephone = inputTelephone.text;
        lvOut.input_email = inputEmail.text;
        lvOut.input_bedrooms = inputBedrooms.text;
        lvOut.input_realtor = inputRealtor.text;
        lvOut.input_comments = inputComments.text;

        if (realtorYes) 
            lvOut.input_hasRealtor = "yes";
         else if (realtorNo) 
            lvOut.input_hasRealtor = "no";
         else 
            lvOut.input_hasRealtor = "no answer";
               

        //send vars to functions page and load in result 
        lvOut.sendAndLoad("assets/files/functions.php", lvIn, "POST"); 



btnSend.addEventListener("click", submit);

请尽可能帮助我! :-)

【问题讨论】:

如果您发布一些代码,我们可能会提供帮助。 好点。现在添加代码.. 抱歉! 【参考方案1】:

您的 Flash 应用程序存在问题:它什么也没发送。我刚刚使用 Chrome 进入了您所说的网页,并在“开发者工具”菜单中打开了“网络”选项卡。它在“发送”按钮单击时捕获了 0 个请求。我不知道 AS2(saveAndLoad 是 AS2 方法),所以我不能说哪里出了问题,但是here 是 AS3 中 POST 请求的一个工作示例。

【讨论】:

【参考方案2】:

尝试通过使用URLLoader 类来采取不同的方法。我假设你的 functions.php 文件在网上的某个地方。

const SITE_DOMAIN:String = "PUT_YOUR_SITE_DOMAIN_HERE_UP_TO_ASSETS_FOLDER";
var loader = new URLLoader();
loader.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
loader.addEventListener(Event.COMPLETE, loadCompleteHandler);

request = new URLRequest();
request.url = SITE_DOMAIN + "assets/files/functions.php";
request.method = URLRequestMethod.POST;
loader.load(request);

function loadCompleteHandler(event:Event):void

    // handle load complete


function securityErrorHandler(event:SecurityErrorEvent):void

    // handle security error


function ioErrorHandler(event:IOErrorEvent):void

    // handle io error

希望对您有所帮助。

【讨论】:

【参考方案3】:

您的 PHP 脚本中有错误:http://nordicacondos.com/assets/files/functions.php 修复它,然后在您的 AS 代码中尝试一些跟踪以查看发送到 PHP 的内容。

    通过在内部添加跟踪来检查您对非空值的测试是否有效(我认为您的问题出在此处,因为即使所有字段都已填写,您的 swf 也不会发送任何内容) 发送前检查lvOut对象的内容,在AS2中可以这样浏览内容
for (var name in lvOut) 
  trace(name +'->' + lvOut[name]);

添加 PHP 脚本的完整路径,以便您可以从 Flash IDE 进行测试。

    在 lvIn onLoad 处理程序中添加跟踪以检查其是否已触发

您也可以通过像这样记录原始请求来检查 PHP 端:

$handle = fopen('log.txt', 'ab+');
fwrite($handle, print_r($_REQUEST, true) );
fwrite($handle, PHP_EOL);
fclose($handle);

确保您对 functions.php 目录具有写入权限。

当然使用 AS3 会提供更好的控制... :)

【讨论】:

以上是关于ActionScript - 联系表单不起作用的主要内容,如果未能解决你的问题,请参考以下文章

插入日期选择器后 Jquery 表单验证不起作用

邮政编码无处不在(PCA 预测)在 Dynamics 365 移动应用程序中的联系人或帐户表单上不起作用

Actionscript 3.0 调用 Javascript 不起作用?

Fancybox 2,带表单的 iframe,在 IE7 中不起作用

电子邮件模板Magento不起作用

为啥movieclip中的按钮不起作用(actionscript 2)