Setting the variable in javascript function
我在设置变量值时遇到问题。 我的代码如下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | function fpform(){ var response_new = ''; var password_reset =""; var fpemail = $('#frgtpwd').val(); //var fpemail = document.getElementById('frgtpwd').value; if (fpemail ==""){ $('span#fperror').text("insert your emal address"); //document.getElementById('fperror').innerHTML ="Insert your email address"; password_reset = 'no'; } else { var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; if (filter.test(fpemail)==false) { $('span#fperror').text("Email address is not in valid format"); //document.getElementById('fperror').innerHTML ="Email address is not in valid format"; password_reset = 'no'; } else { $("#loader").html('<img src="images/ajax-loader.gif" />'); $.post("forgot_password_process.php", { email:fpemail }, function(response){ response_new = response.trim(); }).success(function () { if (response_new == 'yes'){ $("#fperror").html('<font color="green">Your password has been reset now and emailed to you </font>'); $("#loader").empty(); password_reset = 'yes'; } else { $("#loader").empty(); $("#fperror").html('<font color="black"> Email address was not found in database!</font>'); password_reset = 'no'; } }); } } if (password_reset =="yes"){ alert(password_reset); return true; } else { alert(password_reset); return true; } } |
最后一个if条件是检查password_reset变量是否设置为yes,并根据该值返回true或false。 但警报显示password_reset变量的空白值。 我似乎无法找到这背后的问题,因为在到达最后一个if之前应该分配password_reset变量。 任何人都可以建议解决方案。
亲切的问候
更新
不确定为什么你的函数返回true / false,但为了工作,你必须进行同步AJAX调用,否则外部函数将在AJAX调用完成之前很久就返回,此时你不知道 回应是什么。
您可能应该尝试重构代码,以使代码依赖于外部函数的响应,而不是由success-callback调用。
我会像Christofer一样发布同样的东西。 这是一个固定的代码示例。 只需删除最后一个代码块。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | .success(function () { if (response_new == 'yes'){ $("#fperror").html('<font color="green">Your password has been reset now and emailed to you </font>'); $("#loader").empty(); password_reset = 'yes'; alert 'yes'; return true; } else { $("#loader").empty(); $("#fperror").html('<font color="black"> Email address was not found in database!</font>'); password_reset = 'no'; alert 'no'; return false; } |