2012-07-16 82 views
0

我有下面的代码是工作的罚款:如果我的2“如果”一个“其他”的声明(见下文)之间把阿贾克斯成功性反应

success: function (upd_rsp){ 
    //if email is not register 
    if(upd_rsp == "email_no"){ 
    exstInfo.text("This E-mail is not registered in our Database!"); 
    exstInfo.addClass("error"); 
    return false; 
    } 

    //if email & pass don't match 
    if(upd_rsp == "email_pass_no"){ 
    matchInfo.text("Email and Password don't match!"); 
    matchInfo.addClass("error"); 
    return false; 
    } 

现在,第二个“如果”没有得到执行。我错在哪里?

else{ 
    exstInfo.text(""); 
    exstInfo.removeClass("error"); 
    return true; 
    } 

解决方案工作得很好。

回答

2

如果在执行第二个if之前设置了return值,则脚本将在发送return后停止。

这是许多方法可以做到这一个:

success: function (upd_rsp){ 
    //if email is not register 
    var email_error = false; 
    var pass_error = false; 
    if(upd_rsp == "email_no"){ 
    exstInfo.text("This E-mail is not registered in our Database!"); 
    exstInfo.addClass("error"); 
    email_error = true; 
    } else { 
    exstInfo.text(""); 
    exstInfo.removeClass("error"); 
    email_error = false; 
    } 


    //if email & pass don't match 
    if(upd_rsp == "email_pass_no"){ 
    matchInfo.text("Email and Password don't match!"); 
    matchInfo.addClass("error"); 
    pass_error = true; 
    } else { 
    .... 
    pass_error = false; 
    } 

    if(email_error == true || pass_error == true){ 
    return false; 
    } else { 
    return true; 
    } 
+0

叶氏...我只是注意到了这一点我自己.. :)谢谢。我刚刚取消了回报,并正在工作!但是这只是在回归的情况下才会发生。 ? – Pavlos1316 2012-07-16 12:55:36

+0

我已更新我的答案,以包含可能的解决方案。让我知道它是否有帮助。 – johnmadrak 2012-07-16 12:56:36

+0

只有返回值为true的原因是因为ELSE正在由导致返回值为true的脚本执行;正在执行。脚本返回一些内容后,脚本将停止运行。在我上面的示例中,我提供了一种避免此问题的方法。 – johnmadrak 2012-07-16 13:04:32