flash AS3 if / else语句的问题

时间:2011-09-19 10:29:04

标签: php flash actionscript-3 if-statement

我正在尝试在flash中使用if语句来检查变量(从PHP获取)是否等于某些东西,但是出了点问题。

代码:

function completeHandler(event:Event):void{
    // Load the response from the PHP file
    var data:URLVariables = new URLVariables(event.target.data);
    var return_stat = data.return_stat_verify;



    if (return_stat == "FAILED"){
    status_txt.text = "dsfdsfg";
        }
        else if (return_stat == "PASSED"){

        var first_nme = data.return_first;
        var second_nme = data.return_second;
    var email_addr = data.return_email;
    var user_domain = data.return_domain;
    var user_name = data.return_username;

    gotoAndPlay("finish");

    first_txt.text = first_nme;
    second_txt.text = second_nme;
    email_txt.text =  email_addr;
    username_txt.text = user_name;
    domain_txt.text = user_domain;


    }

现在,当我测试时,没有任何反应。然后,我尝试在其中放置一个简单的else语句,以查看ifelse if语句是否都失败。

代码:

function completeHandler(event:Event):void{
    // Load the response from the PHP file
    var data:URLVariables = new URLVariables(event.target.data);
    var return_stat = data.return_stat_verify;

    if (return_stat == "FAILED"){
    status_txt.text = "dsfdsfg";
    }
    else if (return_stat == "PASSED"){

    var first_nme = data.return_first;
    var second_nme = data.return_second;
    var email_addr = data.return_email;
    var user_domain = data.return_domain;
    var user_name = data.return_username;

    gotoAndPlay("finish");

    first_txt.text = first_nme;
    second_txt.text = second_nme;
    email_txt.text =  email_addr;
    username_txt.text = user_name;
    domain_txt.text = user_domain;


    }
    else {
        status_txt.text = "I hate flash";

    }

现在,当我测试时,flash在status_txt字段中打印出“我讨厌闪光”。所以我然后替换status_txt的值来打印出我正在使用if语句的变量(return_stat):

else {
            status_txt.text = return_stat;

        }

然后,当我测试它时,它显示PASSED或FAILED。这意味着问题不在于PHP,因为它返回了正确的数据,问题在于If语句。

我完全迷失在这里。我没有看到任何错误,任何想法?

谢谢你们。

修改

我的PHP代码:

<?php

require ('installation_5_functions.php');
require ('cust_ver_i.php');


$username=$_POST['userName'];

$ident_encrypt=$_POST['userPsswrd'];


verify($reference_id, $username, $ident_encrypt);


if ($ref_id_stat == "FAILED"){

$retrn_stat = "FAILED";

print "return_value=$error_ref_id&return_stat_verify=$retrn_stat";  

exit();

}
if($ref_id_stat == "PASSED"){

if ($user_verify_status == "FAILED"){

$retrn_stat = "FAILED";


print "return_value=$user_verify_error&return_stat_verify=$retrn_stat";

}

elseif ($user_verify_status == "PASSED"){

if ($cust_status == "DEACT"){

$retrn_stat = "FAILED";

print "return_value=$display_error_stat&return_stat_verify=$retrn_stat";    

}
elseif ($cust_status == "ACTIVE"){

$retrn_stat = "PASSED"; 

print "return_first=$cust_first&return_second=$cust_last&return_email=$cust_email&return_username=$cust_username&return_domain=$cust_domain&return_stat_verify=$retrn_stat";

}

}
}



?>

4 个答案:

答案 0 :(得分:2)

很多时候,空白可能存在问题。例如,如果

data.return_stat_verify == 'FAILED  '

当您将其放入TextField时,似乎没有区别。要查看是否是这种情况,您可以尝试:

// place a character on both sides. That will show whether there is whitespace
status_txt.text = "|"+return_stat+"|";

修改

以下情况如下。这意味着您需要修剪输入。首先,确保PHP文件中没有额外的空格(最后一行是?>还是末尾有一个空行??>之外的空行会导致你描述的问题。

然后,为安全起见,请检查输入。就个人而言,我会使用StringUtil.trim,因为它是最明确的,因为大多数语言都有某种方式可以做一些非常相似的事情。如果做不到这一点,我会使用正则表达式来解决这个问题:

// using two to be explicit
// /^\s+/m this removes all occurrences of one or more spaces at the beginning
return_stat = return_stat.replace(/^\s+/m, "");
// /\s+$/m this removes all occurrences of one or more spaces at the end
return_stat = return_stat.replace(/\s+$/m, "");

当然,你可以直接插入它:

// use the global flag if you are doing this all at once.
return_stat = return_stat.replace(/^\s+|\s+$/mg, "");

答案 1 :(得分:0)

答案 2 :(得分:0)

好的,我已经设法解决了这个问题。我将exit();放在php脚本中每个if / else语句的底部,它现在似乎正在运行。什么都没有意义,但它确实成功了。

感谢您的帮助。

答案 3 :(得分:0)

问题可能是由关闭php标记引起的:?> 请参阅:Why would one omit the close tag?

该标记之后的任何空格都将附加到任何打印/回显输出。虽然html页面中的额外空格不会造成麻烦,但在你的情况下这是一个问题。很容易错过,因此最好避免在这些情况下使用结束标记,或者确保标记后面没有任何字符。