Php flash AS3 if/else语句存在问题
我试图在flash中使用if语句来检查一个变量(从PHP获取)是否等于某个值,但是否出了问题 代码:Php flash AS3 if/else语句存在问题,php,flash,actionscript-3,if-statement,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;
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;
}
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";
}
现在,当我测试时,什么都没有发生。然后,我尝试在其中放置一个简单的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;
}
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\u txt
字段中打印出“我讨厌flash”。因此,我随后替换status\u txt
的值,以打印出使用if语句的变量(return\u stat
):
然后当我测试它时,它显示通过或失败。这意味着问题不在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";
}
}
}
?>
可能您没有从服务器返回字符串?尝试检查返回的类型
很多时候,空白会出现问题。例如,如果
data.return\u stat\u verify==“失败”
当您将其放入文本字段中时,不会出现任何差异。要查看是否存在这种情况,您可以尝试:
// place a character on both sides. That will show whether there is whitespace
status_txt.text = "|"+return_stat+"|";
编辑 看起来下面就是这种情况。这意味着您需要调整您的输入。首先,确保PHP文件中没有多余的空格(最后一行是
?>
还是结尾有空行??>
之外的空行会导致您描述的问题
然后,为了安全起见,也检查输入。就我个人而言,我会使用它,因为它是最明确的,因为大多数语言都有一些方法来做一些非常类似的事情。如果没有,我会使用正则表达式来解决这个问题:
// 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, "");
好的,我已经设法解决了这个问题。我将
exit();
放在php脚本中每个if/else语句的底部,它现在似乎正在工作。这样做毫无意义,但它成功了
感谢您的帮助。问题可能是由关闭的php标记引起的:
?>
见:
该标记后面的任何空白都将附加到任何打印/回送输出中。虽然html页面中的额外空白不会造成问题,但在您的情况下,这是一个问题。很容易忽略这一点,因此在这些情况下,最好避免使用结束标记,或者确实确保标记后面没有任何字符。这是什么意思<代码>当我测试它时?显然
return_stat
的值既不是“通过”也不是“失败”,更可能是“null”或“未定义”。我的意思是,当我从服务器(在浏览器中)查看swf时。不,return_stat确实返回了“失败”或“通过”的正确值这就是我告诉它在PHP中要做的事情。因此,PHP返回return_stat_verify的值为“PASSED”或“FAILED”,然后flash获取该值作为变量值(return_stat的值)。不,return_stat的值不是“null”或“undefined”…正如我在问题中所说的,我使用else语句在status_txt字段中打印return_stat的值,然后打印正确的值(“通过”或“失败”),请检查这一点,希望能有所帮助。您应该使用firebug检查php中的返回变量。但是我检查了php文件。任何地方都没有空格(不应该有空格的地方)。刚刚尝试了那个代码。我得到了“| FAILED(还有另一个|但在新行中。)”所以第二个|在“|FAILED”@Nav下面,这就是你的错误所在:字符串中有一个新行字符(“FAILED\n”)。不知怎的,你在php代码中给变量添加了一个“换行符”。你可以通过修剪return\u stat
来解决它。好的,那么修剪return\u stat是什么意思。我该如何修剪它呢?谢谢。@Nav删除所有空白:return\u stat=return\u stat.replace(/\s/m,”);
\s
表示任何空格字符(包括换行符);/../m之后的m
表示“对此正则表达式执行多行搜索”。它已中断,因为您的逻辑已关闭。如果要进行多个比较,其中只有一个比较为真,请使用开关(真)语句,并将您的比较放在案例行“case(return_stat==”FAILED”):“更容易理解的代码,您永远不会有这个问题。嘿。但是我如何避免php结束标记,因为代码当时不会运行。或者它会运行吗?@Nav没有它运行得很好。请参阅注释:“文件末尾的PHP块的结束标记是可选的[…]”