开发者

problem with flash AS3 if/else statements

I'm trying to use the if statement in flash to check if a variable (fetched from PHP) is equal to something, but something is going wrong.

The code:

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;


    }

Now when i test that, nothing happens. I then make an attempt to place a simple else statement in there to see if both if and else if statements fail.

the code:

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"){
开发者_如何学JAVA    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";

    }

Now when i test that, flash prints out "I hate flash" in the status_txt field. So i then replace the value of status_txt to print out the variable that I'm using the if statements with (return_stat):

else {
            status_txt.text = return_stat;

        }

Then when i test it, it shows either PASSED or FAILED. Which means the issue does not lie in PHP as it's returning the correct data and the issue lies within the If statements.

I'm completely lost here. I don't see anything that I've done wrong, any ideas?

Thanks guys.

EDIT

My PHP CODE:

<?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";

}

}
}



?>


A lot of times there can be issues with whitespace. For example, if

data.return_stat_verify == 'FAILED  '

When you put it into a TextField, there will not appear to be a difference. To see if this is the case, you might try:

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

EDIT

It looks like this is the case below. This means you need to trim your input. First, make sure that there is no extra whitespace in the PHP file (do you have the last line as ?> or is there an empty line at the end? An empty line, outside of ?> would cause the problem you describe.

Then, for safety's sake, check the input as well. Personally, I would use StringUtil.trim because it is the most explicit and because most languages have some way to do something very similar. Failing that, I would use regex to fix this:

// 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, "");

Of course, you could just in-line it:

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


Maybe you are not getting a String as return from the server? Try checking the type of the return.

http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/operators.html?filter_flash=cs5&filter_flashplayer=10.2&filter_air=2.6#typeof


Ok, I've managed to solve the problem. I placed exit(); at the bottom of every if/else statement in the php script and it seems to be working now. Makes no sense what so ever but it did the trick.

Thanks for your help.


The problem could be caused by the closing php tag: ?> See: Why would one omit the close tag?

Any whitespace after that tag would be appended to any print/echo output. While additional whitespace in a html page wouldn't cause trouble, in your case it's a problem. It is easy to miss that, so it's best to avoid using the closing tag in those cases or to really make sure there aren't any characters after the tag.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜