我正在尝试在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
语句,以查看if
和else 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";
}
}
}
?>
答案 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)
也许你没有从服务器返回一个String?尝试检查退货的类型。
答案 2 :(得分:0)
好的,我已经设法解决了这个问题。我将exit();
放在php脚本中每个if / else语句的底部,它现在似乎正在运行。什么都没有意义,但它确实成功了。
感谢您的帮助。
答案 3 :(得分:0)
问题可能是由关闭php标记引起的:?>
请参阅:Why would one omit the close tag?
该标记之后的任何空格都将附加到任何打印/回显输出。虽然html页面中的额外空格不会造成麻烦,但在你的情况下这是一个问题。很容易错过,因此最好避免在这些情况下使用结束标记,或者确保标记后面没有任何字符。