ActionScript - 联系表单不起作用

时间:2013-03-29 00:34:52

标签: php flash actionscript

我正在尝试调试一个用Flash构建的联系表单,但我不知道如何调试它。从ActionScript,我可以告诉它应该将结果POST到/assets/files/functions.php。问题是,当我填写字段并单击“发送”(这应该触发它)时,没有任何反应,我无法判断它是PHP问题还是闪存问题。

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

网站可以是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);

请尽可能帮助我! : - )

3 个答案:

答案 0 :(得分:0)

您的Flash应用中遇到问题:它什么也没发送。我刚进入你用Chrome浏览器说过的网页,并在“开发者工具”菜单中打开了“网络”标签。它在“发送”按钮点击时捕获了0个请求。我不知道AS2(saveAndLoad是AS2方法),所以我不能说出了什么问题,但是here 是AS3中POST请求的一个工作示例。

答案 1 :(得分:0)

尝试使用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
}

希望得到这个帮助。

答案 2 :(得分:0)

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

  1. 检查您的非空值测试是否有效,方法是在里面添加一条跟踪(我认为您的问题就在这里,因为即使填写了所有字段,您的swf也不会发送任何内容)
  2. 在发送之前检查lvOut对象的内容,在AS2中你可以浏览这样的内容
  3. for (var name in lvOut) {
      trace(name +'->' + lvOut[name]);
    }
    

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

    1. 在lvIn onLoad处理程序中添加一条跟踪,以检查它是否已触发
    2. 您也可以通过记录这样的原始请求来检查PHP端:

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

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

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