0

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

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

在此处找到该网站,点击“连接”,然后点击“发送查询”即可查看表格。

代码如下:

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);

请尽可能帮助我!:-)

4

3 回答 3

0

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

于 2013-03-29T11:28:26.960 回答
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
}

希望这有帮助。

于 2013-03-29T11:41:28.523 回答
0

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

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

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

  1. 在 lvIn onLoad 处理程序中添加一个跟踪以检查它是否被触发

您还可以通过记录原始请求来检查 PHP 端,如下所示:

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

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

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

于 2013-03-30T11:41:03.280 回答